Fondamentali di VBA: objects e collections

VBA è un linguaggio di programmazione orientato agli oggetti o, in inglese, object-oriented. Prima di andare oltre, è bene precisare che VBA è un linguaggio di programmazione che viene scritto in lingua inglese, perciò è bene prendere confidenza fin da subito con alcuni termini specifici e tecnici che, per forza di cose, devono essere imparati, capiti e scritti in inglese.

Capire gli objects (oggetti)

Il concetto di base della programmazione orientata agli oggetti è che si tratta di un’applicazione che consiste di vari oggetti singoli, ognuno dei quali ha le proprie caratteristiche e usi.
Per capire meglio di cosa stiamo parlando, se volessimo ragionare come VBA, si potrebbe dire che una casa è un oggetto.
Una casa ha diverse stanze e queste stanze sono considerate da VBA come altri oggetti separati. Queste stanze possono anche avere al loro interno dei mobili, che VBA considera a loro volta come altri oggetti.
Inoltre, ogni stanza può avere delle particolari caratteristiche e un particolare uso, l’oggetto cucina non sarà uguale all’oggetto bagno, per esempio.




Detto questo, è possibile identificare uno specifico oggetto in VBA attraverso l’object model (il modello dell’oggetto). Per esempio, per indicare la cella A1 del Foglio 1 di una cartella di lavoro Excel, si può inserire questo codice:

Application.ThisWorkbook.Sheets (“Foglio1”).Range(“A1”).Select

Nella maggior parte dei casi, la gerarchia dell’object model è comprensibile per VBA ed Excel, quindi non è necessario scrivere ed esplicitare ogni livello. Se noi scriviamo, per esempio, il codice che vedete di seguito, Excel intenderà che ci si sta riferendo alla cartella di lavoro attiva e al foglio attivo -Application.ThisWorkbook.Sheets (“Foglio1”)-:

Range(“A1”).Select

Invece, se il cursore si trova già nella cella che noi desideriamo e che consideriamo come “cella attiva” o selezionata, possiamo semplicemente usare l’oggetto ActiveCell, evitando di specificare effettivamente la cella a cui ci stiamo riferendo. Quando usiamo questo tipo di oggetto, però, dobbiamo essere certi di aver posizionato il cursore nella cella corretta:

ActiveCell.Select



Capire le collections

Ora che abbiamo capito cosa sono gli oggetti e l’object-model, parliamo di un altro concetto fondamentale relativo a VBA.
Molti degli oggetti di Excel appartengono a collezioni (collections). Ad esempio, in ogni “oggetto” Cartella di lavoro (un file Excel), si ha una collezione di fogli di lavoro. Excel e VBA considerano le collezioni come oggetti a loro volta.
Per questo, se si vuole fare riferimento ad uno specifico foglio di lavoro in una collection di fogli di lavoro, è possibile fare riferimento ad esso usando la sua posizione nella collection, come un numero di indice che inizia con 1, o dal suo nome come testo citato tra le virgolette, come riportato negli esempi di seguito:

Worksheets(1).Select

oppure

Worksheets(“Foglio1”).Select




Per riferirsi, invece, ad un foglio di lavoro che si trova in una cartella di lavoro non attiva (che quindi non è nel file Excel che stiamo utilizzando al momento), dovremo esplicitare ad Excel anche il nome del file, come nell’esempio che segue:

Workbooks(“File esempio.xlsm”).Worksheets(“Foglio1”).Select

Come abbiamo detto prima, a proposito degli objects, ogni oggetto, per Excel e VBA, può avere un suo uso e delle sue caratteristiche. Nella prossima lezione impareremo come capire le proprietà degli oggetti o object properties e i methods, ossia le azioni che un oggetto può compiere.