Un tipo di dati molto importante in VBA è la Collections, che può essere visto come un insieme variabile di dati dello stesso tipo. E' importante perchè molti degli oggetti predefiniti in VBA sono rappresentati con oggetti: Workbooks, Worksheets, Range, ecc.
Sono insiemi di dati e possono sembrare simili ai
vettori come utilizzo: la grande differenza è che il vettore ha una dimensione fissa mentre in una collection gli elementi possono essere semplicmente aggiunti e tolti senza doversi preoccupare della dimensione.
Azione | Come fare |
---|
Dichiarazione | Dim Coll As Collection |
Creazione oggetto | Set Coll = New Collection |
Dichiarazione e creazione | Dim Coll As New Collection |
Aggiungere elemento | Coll.Add "Apple" |
Aggiungere elemento in una posizione | Coll.Add "Apple" , Before:= 1 Coll.Add "Apple" , After:= 1 |
Togliere elemento | Coll.Remove(1) |
Accedere all'elemento | Coll(i) o Coll.List(i) |
Numero degli elementi | Coll.Count |
Svuotare | Set Coll = New Collection |
|
Un esempio dell'utilizzo di una collection è la funzione che trova l'
elenco di file di una cartella.
Differenze fra Collection e Vettori
Proviamo a chiarire le differenze fra
vettori e collection (che possono sembrare molto simili) e quando è meglio usare l'uno o l'altro tipo di dati:
- un vettore ha un dimensione fissa ed è preferibile quando il numero dei dati non cambia spesso;
- una collection è da preferire quando il numero dei dati varia di frequente;
- in una collection di dati elementari (non oggetti) i dati sono in sola lettura.
Elementi di una collection in sola lettura
Un punto che genera spesso confusione è il fatto che gli elementi della collection sono di sola lettura. Questo è di vero quando è composta di tipi elementari come: stringhe, interi, date....
Quando è la collection è composta di oggetti (es. workseets) è invece possibile modificarne il contenuto: nel caso di oggetti infatti nella collection non è memorizzato tutto l'oggetto ma solo il riferimento alla porzione di memoria che contiene i dati e questo è modificabile.
Elementi con chiave
Oltre che elementi semplici, in una collection, è possibile memorizzare coppie di oggetti Chiave-Oggetto, in questo modo accedere al singolo dato è più immediato ed agevole.
Un esempio pratico potrebbe essere il codice con la scheda del cliente, in questo modo attraverso il codice diventa immeditamente disponibile la scheda del cliente.
Per aggiungere un elemento con chiave la sintassi è questa:
Coll.Add Item:="Rosso", Key:="1"
o semplicemente
Coll.Add "Rosso", "1"
Un esempio di utilizzo di una collection in cui gli elementi vengono inseriti con chiave:
Non esiste una funzione predefinita per controllare se una chiave è già presente in una collection ma si genera un errore se tentiamo di farlo, una funzione
semplice funzione permete di fare la verifica.