Accedi per seguire   
Seguaci 0
Alexsandra

Vba : Finestre Personalizzate : Le Userform :: Parte 1

1 messaggio in questa discussione

VBA : Le Userform :: Parte 1

Finora abbiamo visto come utilizzare delle finestre di dialogo che VBA mette a disposizione tramite le funzioni MsgBox e InputBox, sebbene queste funzioni possano garantire ad un programma un’ottima funzionalità il loro utilizzo è abbastanza limitato. Durante lo sviluppo di programmi più complessi è indispensabile usare finestre di dialogo, che permettano all’utente di selezionare più opzioni, scegliere elementi da una lista o digitare valori diversi, in pratica per incrementare la funzionalità del programma è necessario utilizzare finestre di dialogo personalizzate che ci permettano di velocizzare le nostre procedure, in questo contesto VBA ci mette a disposizione l’oggetto Userform(Finestre Utente) che ci permette la creazione e la manipolazione di finestre di dialogo personalizzate all’interno di programmi o procedure.

Utilizzando le Userform, è possibile costruire finestre personalizzate per visualizzare dati, o richiedere all’utente la digitazione di valori, utilizzando la logica che abbiamo impostato per la corretta esecuzione del programma, per esempio possiamo mostrare una finestra di dialogo, che mette a disposizione una serie di formati data, obbligando l’utente alla scelta di un solo formato tra quelli mostrati.

In sostanza le finestre di dialogo permettono al programma di interagire con l’utente in modo più “sofisticato” e forniscono uno strumento versatile per svolgere le normali funzioni di Input e Output. L’oggetto Userform è una finestra di dialogo vuota e contiene una barra del titolo e un pulsante di chiusura, aggiungendo controlli a un oggetto di tipo Userform è possibile personalizzare l’aspetto e la funzionalità della finestra di dialogo. Ogni oggetto Userform possiede proprietà, metodi e risponde ad eventi, tutti ereditati dall’oggetto Userform, inoltre ogni oggetto Userform incorpora un modulo nel quale l’utente può aggiungere i propri metodi e proprietà e nel quale può scrivere il codice che risponde ad eventi della finestra.

Cosa significa questo? Significa che possiamo definire evento qualsiasi cosa si verifichi all’interno della finestra di dialogo o in un suo controllo, tipici esempi di evento sono la pressione di un pulsante di comando o la selezione di una casella di controllo. Altri eventi possono includere la modifica di una casella di testo o la selezione di una lista, i clic del mouse, la pressione dei tasti e altre azioni interne attivano gli eventi. Gli oggetti utilizzati (finestre e controlli) rendono disponibile una serie di eventi, è quindi possibile scrivere procedure VBA che rispondono a questi eventi. Queste procedure vengono denominate Procedure di evento come per esempio la pressione di un pulsante di comando, la procedura di evento contiene tutte (e solo) le azioni da eseguire in relazione all’evento, altro esempio può essere la chiusura di una finestra tramite il pulsante di chiusura la procedura di evento viene eseguita in aggiunta all’azione causata dall’evento (in questo caso la chiusura della finestra di dialogo)

Userform: Come crearle

Per inserire in un file di Excel una Userform la procedura è abbastanza semplice, entriamo nell’editor del VBA (premiamo i tasti ALT+F11) e ci comparirà una schermata come la seguente

%25238old_01.png Fig. 1

Tralasciamo per il momento l’area bordata di rosso che il suo contenuto varia dal tipo di software installati che si interfacciano con il pacchetto Office, poco sotto vediamo il nostro file VBAProject (lezione8.xls) che contiene i fogli del nostro file, inoltre vediamo anche un altro modulo (ThisWorkbook) che rappresenta e corrisponde all’intero file (lezione8.xls), poco sotto compare una finestra (Finestra delle Proprietà) evidenziata dalla freccia rossa.

Per creare una Userform seguiamo questo percorso Inserisci > Userform

%25238old_02.png Fig. 2

Come evidenziato in figura e di seguito ci compare una finestra come questa

%25238old_03.png Fig. 3

Possiamo notare che nella finestra di destra ci è comparsa una Form vuota e a sinistra vediamo un box (Casella degli strumenti) che ci permette di inserire i vari controlli all’interno della nostra Userform.

La Userform ora è creata, possiamo modificarla a piacere, basta posizionarsi in un angolo (inferiore destro) e trascinare il mouse tenendo premuto il tasto sinistro e rilasciarlo quando abbiamo raggiunto le dimensioni desiderate. Il metodo più semplice per controllare un oggetto Userform è utilizzando i Metodi e le Proprietà predefinite della classe Userform e scrivere le procedure evento per la gestione della finestra e dei controlli in essa contenuti, i metodi più comuni da utilizzare sono:

Copy – Cut – Hide – Paste – PrintForm – Repaint – Show

Inoltre l’oggetto Userform dispone anche di eventi che sono i seguenti

Activate – Click – DblClick – Deactivate – Initialize – Terminate

Come vedete sono diversi, per il momento ci fermeremo a quelli più usati, iniziamo dai metodi cioè: Hide e Show e vediamo il loro significato.

Hide : Nasconde la finestra di dialogo (la Userform) senza liberare la memoria associata all’oggetto, in questo modo vengono mantenuti i valori nei vari controlli contenuti in essa

Show : Rende visibile la finestra sullo schermo, se la finestra non è caricata in memoria, viene effettuato il caricamento

Inoltre VBA fornisce due comandi che sono molto utili quando usiamo l’oggetto Userform, i comandi sono Load e Unload, questi comandi possono essere utilizzati per caricare l’oggetto in memoria e per liberare la memoria se occupata dall’oggetto. La sintassi per questi comandi è la seguente:

Load Oggetto

Unload Oggetto

In questo enunciato Oggetto rappresenta un riferimento valido ad un oggetto di tipo Userform, con il comando Load carichiamo l’oggetto in memoria, ma non lo rende visibile sullo schermo, e con il comando Unload lo scarichiamo dalla memoria. Abbiamo appena detto che con Load carichiamo l’oggetto in memoria, ma non lo portiamo a video, inneschiamo solo l’evento Initialize (che vedremmo più avanti) della Userform ma per poter vedere l’oggetto sullo schermo dobbiamo usare il comando Show, l’enunciato è il seguente

Userform1.Show

Pertanto se vogliamo far comparire una finestra di dialogo a video dovremmo lanciare il comando Show, ma come facciamo? Una volta creata la Form abbiamo a disposizione solo metodi ed eventi, ma tutti riferiti all’oggetto Userform, mentre a noi serve un altro procedimento che veicoli la nostra finestra di dialogo. Se diamo uno sguardo al nostro progetto guardando nella finestra di sinistra noteremo la comparsa dell’oggetto Userform:

%25238old_04.png Fig. 4

Vediamo che la Form è presente, ma abbiamo appena visto che deve essere veicolata per poter renderla visibile, un sistema per ottenere questo è il seguente: dal menù file seguiamo questo percorso Inserisci > Modulo

%25238old_05.png Fig. 5

E nella finestra di progetto ci comparirà la nuova operazione eseguita

%25238old_06.png Fig. 6

A questo punto clicchiamo sulla voce “Modulo1” e nella finestra di sinistra digitiamo il seguente codice

Sub Mostra()
Userform1.Show
End sub

Associamo ora la nostra macro ad un pulsante sul foglio di lavoro (vedi Lezione 2) e premendo sul pulsante comparirà a video la nostra Userform. Ora abbiamo creato la nostra finestra di dialogo e siamo riusciti a portarla a video, fatte le nostre operazioni sulla form la possiamo “chiudere” usando il comando Unload. Il comando Unload và messo all’interno della Userform, associato ad un pulsante di uscita dalla stessa, la sintassi è la seguente:

Unload Me

Vediamo ora la finestra della casella degli strumenti, noterete che l’etichetta del tab riporta il nome di controlli e sono rappresentati dalle varie icone presenti nel box, vediamo cosa rappresentano e come si usano, per farvi comprendere meglio quali siano i controlli li ho raggruppati in questa immagine con il relativo nome e una breve descrizione

vba%252316_06.png Fig. 6

vba%252316_07.png Fig. 7

Modificato da Alexsandra

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Accedi per seguire   
Seguaci 0