Indice http://excelvba



Indice riferimento:

• Introduzione - Obiettivi

• Lezione 1 - Ambiente di sviluppo

    La piattaforma di sviluppo

    Il generatore di Macro

• Lezione 2 - La sintassi Basic

    Le Routine

    La Visibilità

    Prendere delle decisioni

    Operatori Logici, Matematici e di Confronto

    Ripetizione di azioni con i cicli

    Funzioni di manipolazione delle stringhe

    Eliminazione degli errori: Il Debug

• Lezione 3 - Creare l'Interfaccia Utente

    Oggetti e Proprietà

    Il codice associato all’Interfaccia utente

    I Metodi

    Esempio riepilogativo

• Lezione 4 - Gli Oggetti di Excel

    Gli Oggetti Application e WorkBook

    Gli Oggetti WorkSheet e Range

    Le Proprietà Cells, OffSet e Union

    Le Proprietà Columns e Rows

• Lezione 5 - Esempi Pratici

    Esempi di automazioni su oggetti Excel 1

    Esempi di automazioni su oggetti Excel 2

    Esempi sulle interfaccia utente 1

    Esempi sulle interfaccia utente 2

    Esempi sulle interfaccia utente 3

Obiettivi

Visual Basic for Application (VBA) è presente nelle applicazioni Office come: Word, Excel, Power Point ed Access. La sua funzione è quella di rendere programmabili questi applicativi, allo scopo di personalizzarli a seconda delle esigenze specifiche dell'utente. La mia esperienza deriva dall'utilizzo quotidiano del PC e dalla scoperta di questa potenzialità giorno per giorno, aiutato anche dalla mia professione di programmatore.

Molte persone utilizzano correntemente il pacchetto Office, normalmente in uso in molti personal computer, ma ignorano questo tipo di funzionalità. Il mio obiettivo è quello di fornire le basi su questo tipo di programmazione anche a chi non è un programmatore professionista. La trattazione riguarderà solamente Microsoft Excel le cui prestazioni aumentano notevolmente grazie a VBA, tuttavia non va dimenticato che questo tipo di funzionalità può essere usato anche in Word, Access e Power Point.

Requisito fondamentale per coloro i quali intendessero seguirmi in questo percorso formativo, è solamente una discreta conoscenza di Microsoft Excel. Non voglio tediare il lettore con concetti astrusi e complicati, ma solamente dare familiarità con l'ambiente di sviluppo e un'infarinatura sui concetti della programmazione VBA, quindi dare a chi apprende un minimo di indipendenza nell'iniziare a personalizzare i propri fogli di lavoro.

Inizierò col descrivere l'ambiente di lavoro in cui andremo ad operare. In seguito spiegherò come creare un'interfaccia utente (finestra di comandi) e come inserire il codice per farla funzionare. Le ultime sezioni saranno dedicate ad esempi pratici.

Ambiente di sviluppo

L’ambiente di sviluppo di Visual Basic For Application è facilmente accessibile dal menù "Strumenti"; "Macro"; "Visual Basic Editor". Qui avremo modo di progettare e sviluppare programmi in Visual Basic per soddisfare le nostre esigenze, in virtù del fatto che gli strumenti sono perfettamente integrati con Microsoft Excel.

I progetti realizzabili con VBA possono essere di tre tipi:

• Progetto di documento

• Progetto di modello

• Progetto di componente aggiuntivo dell’applicazione

Nei "Progetti di documento" tutti i componenti del progetto sono legati alla cartella di lavoro utilizzata al momento, e non andranno ad intaccare ne l’applicazione Excel, ne i suoi modelli generali; quindi il codice rimarrà confinato nel file aperto. Nel momento in cui il file cambierà posizione il nostro progetto si sposterà con esso. Di conseguenza, quando chiuderemo la nostra cartella e ne apriremo una nuova non avremo a disposizione il progetto da noi creato.

Nei "Progetti di modello" invece il codice generato è associato al modello generale di Microsoft Excel, quindi aprendo una nuova cartella Excel o qualsiasi cartella esistente avremo sempre a disposizione il nostro progetto VBA.

I componenti aggiuntivi sono strumenti per ampliare le funzionalità di Microsoft Excel, come, ad esempio, un comando personalizzato richiamadile dalla barra degli strumenti o da una voce di menù. Anche questa tipologia di progetto non è legata solamente al documento corrente ma direttamente all’applicazione Excel.

Nello specifico noi tratteremo solamente i "Progetti di documento".

La piattaforma di sviluppo

[pic]

L’editor visual Basic offre numerosi strumenti avanzati di sviluppo e programmazione:

1. Finestra di progetto: mostra l’elenco gerarchico dei progetti aperti e di tutti i moduli di codice e finestre di interfaccia appartenenti ad un determinato progetto. Ad ogni progetto sono associate quattro cartelle a seconda del tipo di modulo che viene sviluppato.

o Microsoft Excel oggetti: contiene il codice legato ai fogli ed alla cartella di lavoro.

o Form: contiene le interfaccia utente associate al progetto.

o Moduli: contiene i moduli di codice generici.

o Moduli di classe: contiene i moduli per la creazione di nuove classi di oggetti.

2. Finestra Userform (interfaccia utente): Questa finestra ci permette di creare finestre di interfaccia utente personalizzate da applicare ai programmi VBA, simili in tutto e per tutto a quelle proprie di Microsoft Excel.

3. Finestra delle proprietà: mostra l’elenco, alfabetico o per categorie, di tutte le proprietà (altezza, larghezza, colori, font, descrizioni, ecc…) appartenenti ad un controllo contenuto in uno "UserForm" o ad uno "UserForm" stesso.

4. Modulo di codice: Luogo dove viene scritto il codice Visual Basic. Esistono tre tipi di moduli di codice: generici, di classe e di userform.

5. Casella degli strumenti: contiene una serie di controlli necessari per costruire l’interfaccia utente. Per spostare i controlli nella "UserForm" basta cliccare sull’oggetto interessato e mantenendo premuto il tasto sinistro trascinarlo sulla finestra Userform.

6. Finestra immediata; Finestra Variabili locali; Finestra espressioni di controllo: Finestre usate per il Debug (eliminazione degli errori sintattici e logici) del codice.

7. Visualizzatore degli oggetti: elenco di tutti gli oggetti, metodi, proprietà ed eventi appartenenti ad un controllo o all’applicazione Excel.

Il generatore di Macro

Excel permette la registrazione di macro, cioè la registrazione delle azioni eseguite sull’interfaccia di Microsoft Excel, per poi essere ripetute quando ve ne fosse la necessità.

Le applicazioni Office offrono un modo molto semplice per creare macro grazie al "Registratore di macro". Il processo è molto simile alla registrazione di musica in una cassetta. Quando viene richiamata la registrazione, vengono ripetute le stesse azioni compiute durante la registrazione.

In questo modo le istruzioni vengono tradotte in codice Visual Basic e salvate in un modulo di codice interno al progetto della cartella di lavoro Excel corrente. La registrazione di macro è molto utile perchè permette di vedere l’esatta sintassi necessaria per la gestione degli oggetti Excel. Essa inoltre permette di scrivere codice Visual Basic con maggiore facilità, evitando continue ricerche nella guida in linea.

Il codice registrato sottoforma di macro non sarà perfettamente adeguato alle esigenze di progettazione, ma spesso sarà una utile base di partenza per la scrittura dei programmi del nostro progetto, che in seguito verrà spostato e/o modificato grazie all’editor di Visual Basic.

Vediamo una semplice dimostrazione:

1. Apriamo un nuovo documento di Microsoft Excel. Dalla voce "Macro" del menù "Strumenti" selezioniamo "Registra nuova macro".

[pic]

2. Sulla finestra "Registra macro" assegniamo il nome "MacroScrivi" e clicchiamo "OK".

[pic]

3. A questo punto apparirà sul foglio un pulsante con un quadrattino nero il quale indica che è iniziata la registrazione. Selezioniamo la casella "B2" dal foglio Excel e scriviamo "Ciao Mondo", quindi clicchiamo sul quadrattino per terminare la registrazione.

4. Creiamo un’altra macro che chiameremo "MacroCancella" usando lo stesso procedimento.

5. Durante la registrazione selezioniamo nuovamente la cella "B2" e cancelliamo la scritta "Ciao Mondo".

A questo punto abbiamo creato due Macroistruzioni, visibili selezionando "Macro…" dalla voce "Macro" del menù "Strumenti".

6. Selezioniamo una delle due Macro e clicchiamo "Modifica". Entreremo nell’Editor di Visual Basic dove potremo notare il nuovo modulo generico contenente il codice di funzionamento delle macro: "MacroScrivi" e "MacroCancella".

[pic]

7. Torniamo al foglio Excel, ed associamo le macro appena create a due pulsanti di comando.

Inseriamo la barra degli strumenti "Moduli" dal menù "Visualizza", "barra degli strumenti".

[pic]

Clicchiamo l’icona relativa al pulsante e tracciamo un pulsante sul foglio di lavoro. A questo punto si aprirà la finestra di dialogo "Assegna Macro", selezioniamo "MacroScrivi" e digitiamo "OK". Creiamo un nuovo pulsante sul foglio e ripetiamo lo stesso procedimento per assegnare "MacroCancella".

Complimenti, avete creato la vostra prima macro in Excel!

Provate a crearne delle nuove usando lo stesso procedimento e leggete il codice Visual Basic associato

La sintassi Basic

Affinché le nostre applicazioni funzionino è necessario inserire il codice Basic, cioè le istruzioni che indicano al computer quali comandi eseguire ed in che ordine. Il codice viene inserito nelle finestre "Modulo di codice" all'interno dell'Editor di "Visual Basic". Per creare un nuovo modulo di codice, aprire un nuovo documento Excel ed entrare nell'Editor VBA. Quindi scegliere la voce "Modulo" dal menù "Inserisci".

Classificazione dei Dati

I dati utilizzati dai moduli di codice durante l'esecuzione dei programmi vengono memorizzati all'interno delle "Costanti" e delle "Variabili". Le variabili rappresentano dati il cui valore cambia durante l'esecuzione del programma, le costanti invece contengono sempre lo stesso valore predefinito durante tutta l'elaborazione.

La sintassi di variabili e costanti è la seguente:

Dim NomeVariabile as Tipovariabile

Const NomeVariabile as TipoCostante = ValoreCostante

Il nome di una variabile non può:

• Superare i 255 caratteri.

• Contenere punti o operatori matematici.

• Non deve essere una parola riservata di Visual Basic, cioè quelle parole che servono per impartire le istruzioni al programma; come ad esempio: Loop, Function, Sub, End, Do, Integer, Case, If, For, Else, Then, Select.

Le variabili utilizzate non sono tutte uguali, possono essere numeri interi, numeri decimali, stringhe di caratteri, date ecc... Valori diversi hanno bisogno di un trattamento diverso. Per questo motivo in Visual Basic esistono tipi di dati differenti che possono essere dichiarati in modo esplicito.

|Tipo |Descrizione |

|Byte |Accetta numeri da 0 a 255 |

|Integer |Accetta numeri da -32768 a 32767 |

|Long |Accetta numeri da -2147483648 a 2147483647 |

|Single |Accetta numeri da -3,402823E38 a -1,401298E-45 per valori negativi Da 1,401298E-45 a 3,402823E38 per valori positivi |

|Double |Accetta numeri da -1,79769313486232E308 a -4,94065645841247E-324 per valori negativi Da 4,94065645841247E-324 a 1,79769313486232E308 |

| |per valori positivi |

|Boolean |Accetta solo 2 valori "True" o "False" |

|String |Accetta da 0 a 65000 caratteri |

|Date |Date dal 1 gennaio 100 al 31 dicembre 9999 |

|Variant |Se contiene solo numeri: come Double. Se contiene anche caratteri: come String. |

Per indicare con chiarezza che tipo di dato stiamo usando dobbiamo dichiarare le variabili. Visual Basic assegna le variabili non dichiarate, o dichiarate senza specificare il tipo di dato, al tipo Variant.

Anche se non è necessario, è buona norma dichiarare sempre variabili e costanti all'interno del codice, questo aiuta a ridurre gli errori di scrittura del codice. Quando viene inserita la parola chiave "Option Explicit" in cima al modulo di codice, Visual basic, in caso di mancata dichiarazione di una variabile, darà una segnalazione di errore.

Le Routine

Con la creazione di routine è possibile dividere il codice in blocchi separati. Questo permette di rendere il programma più leggibile ed individuare facilmente gli errori. Utilizzare i moduli permette anche di rendere comune parti di codice a più programmi.

In Visual Basic esistono due tipi di routine.

• Routine Sub: svolgono azioni ma non restituiscono un valore.

• Routine Function: svolgono azioni e restituiscono un valore.

NB: un modulo di codice non coincide necessariamente con una routine, in quanto un modulo può contenere più routine contemporaneamente.

Apriamo un modulo di codice dall'editor di Visual Basic e creiamo la nostra prima routine digitando il codice seguente.

Sub PrimaRoutine()

' La riga successiva visualizza un messaggio

MsgBox "Ciao Mondo", vbInformation, "Ciao"

End Sub

Posizioniamo il cursore all'interno della routine e clicchiamo il tasto avvia:

[pic]

Soffermiamo la nostra attenzione su due cose:

• La riga contrassegnata dall'apice iniziale indica una riga di commento e quindi verrà ignorata durante l'esecuzione del programma. E' importante scrivere commenti nel listato perchè aiuta a rendere più comprensibili i nostri programmi.

• La riga successiva definisce una finestra di messaggio col comando MsgBox. La sintassi è:

• MsgBox "Testo all'interno della finestra", vbInformation, _

"Testo che appare sulla barra del titolo"

"vbInformation" fa apparire l'icona col punto di domanda all'interno della finestra. Esistono altre opzioni che vengono fornite dall'elenco automatico durante la stesura del codice.

La Visibilità

La visibilità di una variabile, o di una costante, definisce la sua disponibilità all'interno del progetto. Puoi dichiarare variabili e costanti a tre livelli:

• Livello locale: vanno dichiarate all'interno della routine e sono disponibili solo all'interno di essa.

• Livello di modulo: Vanno dichiarate in testa alla finestra di modulo di codice e sono viste da tutte le routine contenute all'interno del modulo di codice.

• Livello pubblico: Vanno dichiarate in testa alla finestra di modulo di codice e sono viste da tutte le routine e da tutti i moduli di codice appartenenti al progetto.

Vediamo un esempio:

' Le seguenti variabili sono visibili in tutto il progetto

Public risultato1 As Integer

Public risultato2 As Integer

Public sottraendo As Integer

' La seguente variabile è visibile a livello di modulo

Private operatore As Integer

Sub somma()

' La seguente variabile è visibile

' solo all'interno della routine

Dim Addendo As Integer

operatore = 5

Addendo = 5

risultato1 = Addendo + operatore

MsgBox "Il risultato della somma è: " & risultato1, _

vbInformation, "Somma"

End Sub

Sub sottrazione()

' La seguente variabile è visibile

' solo all'interno della routine

Dim sottraento As Integer

sottraento = 2

risultato2 = operatore - sottraento

MsgBox "Il risultato della sottrazione è: " & risultato2, _

vbInformation, "Sottrazione"

End Sub

Posizionandosi all'interno di una delle routine e premendo il tasto azione noteremo il risultato:

Soffermiamo la nostra attenzione su alcuni aspetti:

• Il carattere "_" alla fine di una riga indica che si desidera continuare l'istruzione alla riga successiva.

• Il carattere "&" serve per concatenare due stringhe di caratteri.

• L'assegnazione del valore alla variabile avviene seguendo la sintassi:

• NomeVariabileStringa = "Stringa di caratteri"

• ' una stringa di caratteri va immessa tra doppi apici.

• NomeVariabileNumerica = numero

' il numero non è immesso tra doppio apice.

L'attributo di visibilità può essere assegnato anche alle “Function” e alle “Sub”. Esempio:

' La procedura seguente è vista solamente a livello di modulo

Private Sub visualizza()

Dim numero1 As Integer

Dim numero2 As Integer

Dim numero3 As Integer

numero1 = 15

numero2 = 5

numero3 = sottrazione(numero1, numero2)

MsgBox "Il risultato della differenza è: " & numero3, _

vbInformation, "differenza"

End Sub

' La funzione seguente è vista a livello di progetto

Public Function sottrazione(operando1 As Integer, _

operando2 As Integer) As Integer

sottrazione = operando1 - operando2

End Function

Prendere delle decisioni

Una istruzione condizionale è uno speciale comando che permette di valutare una o più condizioni per eseguire un particolare blocco di istruzioni. Il concetto è: se si verifica la condizione allora esegui questa istruzione.

In Visual Basic le istruzioni condizionali più semplici sono:

If "condizione" then "istruzione" End if

If "condizione" then "istruzione" else "istruzione" End if

Vediamo un esempio:

Sub valuta()

VariabileInput = _

InputBox("immettere un numero o una stringa di caratteri")

'inizio dell’ istruzione condizionale

If IsNumeric(VariabileInput) Then

MsgBox "la variabile è un numero", vbInformation, "valutazione 1"

Else

MsgBox "la variabile è un carattere o una stringa di caratteri", _

vbInformation, "valutazione 2"

End If

'fine dell’ istruzione condizionale

End Sub

Soffermiamo la nostra attenzione su due aspetti:

• Nella routine è usata l’istruzione: "IsNumeric" che definisce se il valore memorizzato nella variabile "VariabileInput" è numerico o stringa.

• L’istruzione "InputBox" apre una finestra contenente una casella di testo, se immettiamo del testo e clicchiamo "Ok" la funzione restituisce il valore digitato.

Con l’istruzione ElseIf è possibile valutare più espressioni all’interno dello stesso blocco. Esempio:

Sub ValutaNumero()

VariabileInput = InputBox("immettere un numero")

If VariabileInput 1) And (VariabileInput 5) And (VariabileInput 10

• End Sub

• Ripeti finchè la condizione non risulta vera (cicla per vero).

• Sub CicloDo()

• i = 1

• Do While i < 10

• MsgBox "Il valore incremento è " & i, _

• vbInformation, "Ciclo For"

• i = i + 1

• Loop

• End Sub

• Uscita anticipata dal ciclo:

• Sub CicloDo()

• i = 1

• Do

• MsgBox "Il valore incremento è " & i, _

• vbInformation, "Ciclo For"

• i = i + 1

• If i > 10 Then Exit Do

• Loop

• End Sub

Funzioni di manipolazione delle stringhe

La tabella seguente, riassume alcune delle funzioni predefinite di Visual Basic per manipolare le Stringhe.

|Funzione |Descrizione |Esempio |Risultato |

|Len() |Determina la lunghezza di una |NomeVar = Len("Stringa") |7 |

| |stringa | | |

|LCase() |Converte i caratteri da maiuscoli|NomeVar = LCase("Stringa") |stringa |

| |a minuscoli | | |

|UCase() |Converte i caratteri da minuscoli|NomeVar = UCase("Stringa") |STRINGA |

| |a maiuscoli | | |

|StrReverse() |Inverte le stringhe |NomeVar = StrReverse("Stringa") |agnirtS |

|Left() |Estrae i primi caratteri di una |NomeVar = Left("Stringa", 3) |Str |

| |stringa | | |

|Right() |Estrae gli ultimi caratteri di |NomeVar = Right("Stringa", 3) |nga |

| |una stringa | | |

|Mid() |Estrae i caratteri di una stringa|NomeVar = Mid("Stringa", 3,4) |ring |

|InStr() |Trova una parte di stringa su |NomeVar = InStr("Stringa", "n") |5 |

| |un’altra | | |

|LTrim() |Elimina tutti gli spazi iniziali |NomeVar = LTrim(" Stringa ") |"Stringa " |

|RTrim() |Elimina tutti gli spazi finali |NomeVar = RTrim(" Stringa ") |" Stringa" |

|Trim() |Elimina tutti gli spazi iniziali |NomeVar = Trim(" Stringa ") |"Stringa" |

| |e finali | | |

|CStr() |Converte in una stringa |NomeVar = CStr(10) |"10" |

|*CInt() |Converte in un numero intero |NomeVar = CInt("10") |10 |

*Ogni tipologia di dato possiede la propria funzione di conversione: CDbl(); CSng(); CLng(); Cbool(); CByt(); Cdate().

Eliminazione degli errori: Il Debug

Una volta sviluppato il codice è possibile usare gli strumenti di Debug di Visual Basic per vedere l'esecuzione del codice passo-passo, ed eliminare eventuali errori.

Eseguendo un programma è possibile interrompere l'esecuzione ad una determinata riga e valutare lo stato delle variabili. Questo è possibile impostando dei punti di interruzione. Per determinare i punti di interruzione posizionare il cursore nella riga interessata e selezionare la voce "imposta/rimuovi punto di interruzione" dal menù "Debug" (oppure premere il tasto "F9").

[pic]

Quando lanciamo il programma, premendo il comando "Esegui" (o il tasto "F5"), l'esecuzione verrà bloccata all'altezza del primo punto di interruzione incontrato. A questo punto rimangono tre alternative: interrompere l'esecuzione, completare l'esecuzione o eseguire il codice riga per riga (premendo il tasto F8).

[pic]

Visual Basic mette a disposizione alcuni strumenti, per visualizzare i valori che assumono le variabili nel corso dell'elaborazione. Il più immediato è la casella di descrizione che appare posizionando il cursore sulla riga in esecuzione, essa è simile alla casella di descrizione dei comandi che appare quando mantieni il cursore per qualche istante su un comando.

Visual Basic offre tre finestre nelle quali è possibile monitorare il valore delle variabili nel corso dell'elaborazione.

• La finestra "Variabili Locali"

• La finestra "Espressioni di controllo"

• La finestra "Immediata"

Tutte e tre sono disponibili dal menù "Visualizza".

La finestra "Variabili Locali" mostra semplicemente i valori di tutte le variabili contenute nella routine corrente mentre è in esecuzione.

[pic]

La finestra "Espressioni di controllo" è molto simile alla precedente, ma mostra solamente le variabili selezionate con doppio Click del mouse e trascinate all'interno della finestra. Inoltre tratta tutte le variabili disponibili nel modulo, e non solo quelle locali.

[pic]

Per visualizzare le variabili nella "Finestra Immediata" è necessario aggiungere nel listato del programma la riga seguente:

Debug.Print NomeVariabile

Nella finestra verrà visualizzato il valore assunto dalla variabile "NomeVariabile", nel punto in cui è stata inserita l'istruzione.

[pic]

Creare l'Interfaccia Utente

L’Interfaccia utente rende la nostra applicazione semplice ed intuitiva a chi la utilizza. Le interfacce utente sono formate dalle finestre (Userform) e dagli oggetti in esse contenute, come i pulsanti di comando e le caselle di testo.

Vediamo insieme come creare una semplice "Userform".

Apriamo l’Editor di VBA ed inseriamo una nuova finestra scegliendo la voce "Userform" dal menù "Inserisci". Se non è già presente, inseriamo la casella degli strumenti, selezionando l’omonima voce dal menù "Visualizza". Notiamo che, appena inseriamo una nuova Userform, appare l’icona di riferimento della finestra creata nella cartella "Form" della finestra di progetto.

Trasciniamo dalla casella degli strumenti una casella di testo e due pulsanti di comando nella Userform appena creata, in modo da ottenere il seguente risultato.

[pic]

Ora, se non fosse già presente, apriamo la finestra proprietà dal menù "Visualizza". Per ora vi basti sapere che le proprietà sono le caratteristiche inerenti alle finestre ed agli oggetti in essa contenute. Quando un oggetto viene selezionato, nella finestra proprietà compariranno tutte le caratteristiche appartenenti a quel determinato oggetto. La proprietà più importante è sicuramente "Name", che identifica il nome dell’oggetto. Visual Basic definisce un nome di default agli oggetti, come "CommandButton1", tuttavia è utile sostituirlo con un nome che sia facile da ricordare, ed il più possibile inerente alla funzione per cui il comando è stato progettato. Altre proprietà definiscono l’aspetto dell’oggetto come: colori, dimensioni, descrizioni e font delle descrizioni.

Proviamo ad abbellire la Userform appena creata. E’ possibile modificare direttamente le dimensioni degli oggetti trascinando le maniglie poste sui contorni dell’oggetto stesso. Assegniamo i nomi ai nostri oggetti, selezionandoli uno per uno, e modificando la proprietà "Name", dalla Finestra delle proprietà, nel modo seguente.

Assegniamo:

• "FrmCiao" all’oggetto Userform;

• "TxtCiao" all’oggetto testo;

• "CmdCiao" al primo pulsante di comando;

• "CmdEsci" al secondo pulsante.

Modifichiamo le etichette attribuendo alle proprietà "Caption":

• "Ciao Mondo" a "FrmCiao";

• "Invio" a "CmdCiao";

• "Esci" a "CmdEsci".

Selezioniamo "Esegui" dal menù "Esegui", il risultato sarà il seguente:

[pic]

Salviamo come Ciao.xls il documento Excel contenente la Finestra appena creata, questo esempio ci tornerà utile nelle sezioni successive.

Oggetti e Proprietà

Ci soffermeremo sulla descrizione sintetica degli oggetti che appartengono alla casella degli strumenti, e di alcune delle loro caratteristiche principali. Alcune proprietà sono comuni a molti, o a tutti, gli oggetti della casella degli strumenti, per comodità saranno descritte una sola volta.

[pic]

Pulsante di comando

Costituisce un fondamentale oggetto di attivazione degli eventi.

Alcune delle principali proprietà:

• Name: nome di riferimento dell'oggetto.

• Caption: etichetta con cui l'oggetto viene visualizzato sulle form.

• Font: caratteristiche del carattere dell'etichetta: tipo, grandezza, corsivo grassetto, colori.

• Height; Width; Top; Left: dimensioni e posizione dell'oggetto.

• Visibile: indica se l'oggetto è visibile o nascosto (valore booleano: "True" o "False").

• Enabled: indica se l'oggetto è attivo o non attivo (valore booleano: "True" o "False").

Casella di testo

Fondamentale oggetto di visualizzazione ed inserimento dei dati.

Proprietà:

• BackColor: colore di fondo.

• BorderStyle: indica se la casella avrà un contorno semplice o a rilievo.

• ForeColor: colore per i caratteri del testo.

• MultiLine: consente la scrittura del testo su più righe.

Etichetta

Oggetto di descrizione dei dati.

Proprietà:

• AutoSize: adegua le sue dimensioni a quelle della stringa introdotta.

Cornice

Cornice di contenimento dei comandi, che vengono raggruppati secondo una struttura logica.

Casella di Controllo

Oggetto di scelta tra due alternative ("True" o "False").

Proprietà:

• Value: determina il valore ("True" o "False").

• Alignment: consente di disporre la descrizione a sinistra o a destra del controllo.

Pulsante di Opzione

Oggetto di scelta tra due alternative ("True" o "False"). Le Caselle di controllo ed i Pulsanti di Opzione sembrano avere la stessa funzione. Tuttavia se inseriamo i pulsanti di opzione in una cornice, sarà possibile selezionarne uno solo alla volta, mentre le caselle di controllo posso essere selezionate più di una alla volta.

[pic]

Casella di riepilogo

Finestra in cui è possibile rappresentare una lista di dati.

Proprietà:

• Multiselect può assumere tre valori:

1. Single: evidenzia un termine della lista alla volta.

2. Multi: consente più selezioni.

3. Extended: consente più selezioni ma i membri devono essere contigui.

• ListIndex: restituisce il numero di indice della voce selezionata.

Casella combinata

Costituisce una finestra di dati a discesa molto simile alla casella di riepilogo, infatti molte proprietà sono le stesse.

Proprietà:

• Style può assumere due valori:

1. fmStyleDropDownCombo: permette all'utente di scrivere al suo interno.

2. fmStyleDropDownList: non permette all'utente di scrivere al suo interno.

Barra di scorrimento

Costituito da una barra di scorrimento in grado di attivare eventi in funzione dell'avanzamento raggiunto dal suo cursore.

Proprietà:

• Orientation: a seconda se definita fmOrientationHorizontal oppure fmOrientationVertical determina la posizione Verticale o Orizzontale della Barra.

• Value: restituisce un indice in funzione della posizione del cursore.

• Max: definisce il valore limite superiore.

• Min: definisce il valore limite inferiore.

Pulsante di selezione

È costituito da una coppia di pulsanti in grado di incrementere o diminuire il valore del suo indice interno.

Interruttore

Simile al Pulsante di comando ma alterna due stadi "On" e "Off" (True o False).

Pagine

Finestra formata da schede ognuna delle quali può contenere più oggetti.

Immagine

Oggetto in grado di visualizzare delle immagini sulla Userform.

Userform

Anche Userform costituisce un oggetto dotato di proprietà. Molte di queste sono già state illustrate precedentemente. In aggiunta è stata preposta la seguente proprietà:

• BorderStyle: Modificano l'aspetto dello UserForm. Selezionando il tipo "0" non viene mostrato alcun contorno, mentre scegliendo "1" viene aggiunto un bordo nero di contorno.

Il codice associato all’Interfaccia utente

Per permettere alle nostre Userform di svolgere le funzioni, per le quali sono state create, è necessario associare alle finestre ed agli oggetti in essa contenute il codice Visual Basic. Ogni finestra Userform è associata ad una finestra di codice.

Torniamo all’esempio FrmCiao creato all’inizio del capitolo. Selezioniamo la voce "Codice" dal menù "Visualizza", oppure clicchiamo l’icona "Visualizza Codice" dalla "Finestra di Progetto", verrà visualizzata la finestra modulo di codice associata a "FrmCiao".

Nella parte superiore del modulo di codice si trovano due caselle combinate; quella a sinistra contiene tutti gli oggetti disegnati nella Form, mentre quella a destra contiene gli "Eventi" associati agli oggetti.

[pic]

Gli "Eventi" sono le azioni, effettuate su un determinato oggetto, in grado di innescare l’esecuzione di una routine associata a quell'oggetto.

Ad esempio:

selezioniamo dalla casella di sinistra l’oggetto "CmdCiao", verrà creata una routine privata identificata dal nome dell’oggetto selezionato e dall’evento "Click()" suddivisi dal simbolo "_" (Underscore). Questo indica che, nel momento in cui premeremo il pulsante "CmdCiao", verranno eseguite le istruzioni di codice interne alla routine di evento associata.

Click non è l’unico evento associato al comando "Pulsante di comando". Ogni oggetto obbedisce ad una serie di eventi, tutti selezionabili dalla "Casella Eventi" posta in alto a destra del modulo di codice.

Ecco illustrati alcuni eventi, associati agli oggetti che già conosciamo.

Userform

Eventi associati:

• Activate; Deactivate: attivano o disattivano una procedura all’atto dell’apertura o della chiusura della Form.

• Initialize: imposta una procedura contenente particolari istruzioni da lanciare in via preliminare.

Pulsante di Comando

Eventi associati:

• Click: la procedura si attiva col Click sul pulsante.

• DoubleClick: la routine si attiva col doppio Click.

• GetFocus: la routine si attiva quando l’oggetto è selezionato.

• MoseUp: la routine si attiva quando il pulsante viene rilasciato.

• MouseMove: la routine si attiva quando il puntatore del mouse sfiora l’oggetto.

Casella di testo

Eventi associati:

• Change: l’evento consiste nel cambiamento del testo contenuto nella casella.

• KeyPress: evento connesso all’attivazione di qualsiasi tasto.

• KeyUp: evento connesso al rilascio di qualsiasi tasto.

Barra di scorrimento

Eventi associati:

• Scroll: attiva una procedura quando viene modificata la posizione del cursore.

Torniamo al nostro esempio, nel modulo di codice associato a "FrmCiao". All’interno della routine "CmdCiao_Click()" inseriamo:

TxtCiao.Text = "Ciao Mondo"

Creiamo una routine di evento su Click anche per il pulsante "CmdEsci" ed inseriamo il codice:

Unload Me

Salviamo "FrmCiao" e proviamo ad eseguirla.

Soffermiamo la nostra attenzione su due aspetti:

• Le proprietà possono essere modificate non solo attraverso la finestra delle proprietà, ma anche attraverso il codice Basic, mentre il programma è in esecuzione. Notiamo che nel nostro esempio è stata assegnata la stringa "Ciao Mondo" alla proprietà Text dell’oggetto "TxtCiao". In Visual Basic le proprietà sono separate dall’oggetto a cui appartengono tramite un punto. Tutte le caratteristiche legate a un oggetto specifico sono disponibili al momento della stesura del codice, grazie alla casella di descrizione, che appare dopo avere digitato il nome dell’oggetto ed il punto di separazione.

• Unload Me è uno speciale comando che chiude la finestra in uso.

I metodi

Oltre alle proprietà ogni oggetto possiede delle funzionalità dette "Metodi", che compiono delle specifiche azioni sull'oggetto stesso. Ad esempio il metodo "Show" dell'oggetto UserForm ha la funzione di visualizzare e rendere attiva una finestra.

Proviamo ad associare la finestra "FrmCiao" ad un pulsante posto direttamente sul foglio Excel, come abbiamo già visto nel capitolo riguardate il generatore di Macro. Utilizzando il Metodo "Show" potremo visualizzare la nostra finestra con un semplice Click sul pulsante appena creato.

[pic]

Passiamo dall'Editor VBA al documento di Microsoft Excel attivo. Inseriamo la barra degli strumenti "Moduli" dal menù "Visualizza", "Barra degli strumenti". Selezioniamo l'icona relativa al pulsante e tracciamo un pulsante sul foglio di lavoro. A questo punto si aprirà la finestra di dialogo "Assegna Macro", selezioniamo il pulsante "Nuovo", così facendo abbiamo creato una nuova macro. All'interno della routine digitiamo:

FrmCiao.Show

Chiudiamo l'Editor VBA e proviamo il pulsante.

Ci soffermeremo ora sulla descrizione sintetica di alcuni dei Metodi più usati per gli oggetti visti finora.

Userform

• Show: visualizza ed attiva una Userform.

• Hide: Nasconde e disattiva una Userform.

Pulsante di Comando

• Move: cambia la posizione di un oggetto

• SetFocus: seleziona un oggetto e lo rende attivo.

Casella di testo

• Copy: copia il contenuto della casella di testo.

• Cut: taglia il contenuto della casella di testo.

• Paste: incolla il contenuto della casella di testo.

Casella combinata e Casella di riepilogo

• AddItem: consente l'aggiunta di un membro in coda alla lista.

• RemoveItem(n): consente la cancellazione del membro dislocato in posizione "n".

• Clear: cancella tutti i membri della lista.

• List: consente la selezione di un membro della lista specifico.

Nota tecnica:

Nel corso del capitolo abbiamo sempre parlato di Oggetti in generale, tuttavia è doveroso fare una distinzione.

• Classe di oggetti: una classe è una costruzione logica, ossia il modello teorico dell'oggetto.

Esempio: UserForm, TxtBox, CommandButton.

• Istanza di un oggetto: ossia la realizzazione fisica di un oggetto.

Esempio: FrmCiao, CmdCiao, CmdEsci.

Esempio riepilogativo

L'esempio seguente, utilizza alcuni dei controlli descritti nelle sessioni precedenti. Creiamo una nuova UserForm come illustrato in figura e definiamo le proprietà degli oggetti appena creati come riportato in tabella.

[pic]

 

|Name |Captino |TabIndex |

|FrmOggetti |Prova Oggetti |  |

|CboUno |  |0 |

|LstUno |  |1 |

|LstDue |  |2 |

|CmdAggiungi |Aggiungi >> |3 |

|CmdRimuovi | ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download