Collections
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

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.

AzioneCome fare
DichiarazioneDim Coll As Collection
Creazione oggettoSet Coll = New Collection
Dichiarazione e creazioneDim Coll As New Collection
Aggiungere elementoColl.Add "Apple"
Aggiungere elemento in una posizioneColl.Add "Apple" , Before:= 1
Coll.Add "Apple" , After:= 1
Togliere elementoColl.Remove(1)
Accedere all'elementoColl(i) o Coll.List(i)
Numero degli elementiColl.Count
SvuotareSet Coll = New Collection

'definisce la variabile
Dim Coll As New Collection
Coll.Add "Rosso": Coll.Add "Verde": Coll.Add "Giallo"

' usando un ciclo for semplice
Dim i As Long
For i = 1 To Coll.Count
   Debug.Print Coll(i)
Next i

' usando un ciclo for each
Dim Elemento As Variant
For Each Elemento In Coll
   Debug.Print Elemento
Next Elemento

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:
  1. un vettore ha un dimensione fissa ed è preferibile quando il numero dei dati non cambia spesso;
  2. una collection è da preferire quando il numero dei dati varia di frequente;
  3. 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:
Dim Coll As New Collection
Coll.Add "Rosso", "1": Coll.Add "Verde", "2": Coll.Add "Giallo", "3"
  
Dim Elemento As Variant
For Each Elemento In Coll
  Debug.Print Elemento
Next Elemento
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.
 

data4idea srls - PIva 01881000937 - info@data4idea.it