register.png   lostpass.png
Benvenuto nella Community di Alexsandra.it
05 Febbraio 2012 04:15:45
Shoutbox
Devi essere loggato per poter inserire un messaggio.

Faby
28/01/2012 13:48
Buon week end anche ate Delfi Smile

DELFINO
28/01/2012 11:03
buon sabato e buon weekend a tutti... E un bacio alle ragazze Bacio

Faby
27/01/2012 18:21
Ciao Angarat

angarat
27/01/2012 14:38
ciao belli e brutti Bacio ao! ciaooooo! Biggrin

Faby
26/01/2012 13:52
Ciao Delfi, sono di corsa.. a presto

Utenti Connessi
· Gianca05:17:22
· Alex08:17:44
· SALVO18:38:35
· Mirko 1 giorno
· carlo1973 1 giorno
· Spawn 2 giorni

· Totale iscritti: 553
· Nuovo iscritto: SALVO
RSS Feeds
Subscribe to our Feeds

Latest News Latest Articles
Le nostre rubriche

Quotidiani online

Siti Web Visti per Voi

Fotogallery
Siti Amici

Siti Amici

Noi diciamo no

No alla Pedofilia

Page Rank

Powered by  MyPagerank.Net

Pagerank
Award
Corso VBA #8 : Le Userform - Parte 1
Pubblicato da :Alex | 5606 letture | Stampa
Premessa

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)

Le UserForm - Parte 1

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)
che ci permette la creazione e la manipolazione di finestre di dialogo personalizzate all'interno di programmi o procedure.

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



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 blù.

Per creare una Userform seguiamo questo percorso Inserisci > Userform



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



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 e 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 InitializeShow, 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: (che vedremmo più avanti) della Userform ma per poter vedere l'oggetto sullo schermo dobbiamo usare il comando



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



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



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

Ora possiamo soffermarci sulla finestra delle proprietà dell'oggetto Userform che vediamo nell'immagine sotto e possiamo modificare le proprietà di un oggetto Userform sia agendo via codice sia utilizzando la finestra Proprietà nell'editor di VBA, vediamo ora il significato delle voci che si trovano al suo interno.





Come vedete le proprietà sono molte, ho evidenziato in giallo quelle che useremo di più nei prossimi esempi, in aggiunta ai metodi, proprietà ed eventi che l'oggetto Userform mette a disposizione,

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



E quì sotto potete vedere cosa rappresentano





Dopo tutta questa esposizione vediamo come rappresentare quanto abbiamo esposto con qualche listato si capirà meglio il significato delle varie proprietà ed eventi

Sub esempio1()
UserForm1.Caption = "Lezione 8″
UserForm1.Show
End Sub


Con questo codice modifichiamo il titolo della nostra Userform, ma lo possiamo fare anche dalla finestra Proprietà, basta cliccare sulla parte destra della voce "Caption" e cancellare il nome che troviamo di default (Userform1) premendo il tasto Backspace e digitare il testo che vogliamo inserire, con lo stesso metodo possiamo cambiare lo sfondo, il colore, il bordo e tutte le voci che sono esposte poco sopra

Nella prossima lezione parleremo dei controlli, di come si usano con un'ampia descrizione degli stessi.


Condividi Articolo
AddThis:
URL:
BBcode:
HTML:
Facebook Like:


php fusion  copyright © 2002 - 2011 by Nick Jones   Released as free software without warranties under GNU Affero

Theme designed by Benjamin Eriksen | PhpFusionBox.com | Edited and rewritten by Alex