E' un oggetto simile ad una
Collection ma basta un'occhiata alle proprietà per capire la flessibilità molto maggiore che consente, a cominciare dall'ordinamento nativo.
Ha però lo svantaggio che non fa parte delle librerie standard di VBA, ma fa parte delle librerie denominate
System.Collections e questo determina la necessità di una certa attenzione quando distribuiamo il nostro file.
Dichiarazione
Il modo più semplice di utilizzare un oggetto ArrayDictionary è con una dichiarazione di tipo
Late Binding:
Dim listas
Object
Set list= CreateObject("System.Collections.ArrayList")
Volendo utilizzare una dichiarazione
Early Binding dobbiamo prima di tutto creare il collegamento alla librerie del programma, le troviamo nel menù:
Strumenti --> Riferimenti
ma dovremmo caricare una libreria esterna, la troviamo a questo indirizzo:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb
Fatto questo possiamo inserire un oggetto dictionary all'interno del nostro codice, in questo modo, anche se non sarà disponibile l'
IntelliSense :
Proprietà
Azione | Come fare |
---|
Aggiungere elemento | list.Add "Apple" |
Aggiungere elemento in una posizione | list.Insert Posizione, "Apple" |
Togliere un elemento dalla posizione | list.RemoveAt Posizione |
Togliere un elemento dal nome | list.Remove "Apple" |
Togliere un blocco di elementi | list.RemoveRange DaPosizione,NrElementi |
Svuotare | list.Clear |
Accedere all'elemento | list.Item(Posizione) |
Numero degli elementi | list.Count |
Verifica se l'elemento esiste | list.Contains("Apple") |
Posizione di un elemento | fruit.IndexOf("Apple", 0) |
Copia di un ArrayList | Set list2 = list.Clone |
Copia in un Array | list.ToArray |
Ordinamento | list.Sort |
Ordinamento inverso | list.Reverse |
|
Scorrere gli elementi
Scorrendo le chiavi
Scorrendo gli indici:
Su Range
Riportare un ArraList su di un range in colonna:
Riportare un ArraList su di un range in colonna:
Sheet1.
Range("A1").
Resize(1, list.Count).Value = list.ToArray
Distribuzione dell'applicazione Excel contenente un oggetto ArrayList
Come già detto, l'oggetto ArrayList non fa parte di Excel VBA: ciò significa che tutti gli utenti del file devono avere accesso al file 'mscorlib.tlb'
Inoltre, l'utente deve avere installata la versione V3.5 di .Net Framework deve essere installata altrimenti l'applicazione non funzionerà.
Un modo per segnalare questo problema è verificare la presenza del file 'mscorlib.tlb' e nel caso fornire un appropriato messaggio.