image

Una raccolta è un tipo di dati che contiene oggetti archiviati proprio come gli array (ma diversi). Durante la scrittura dei codici VBA di base, è necessario aver utilizzato cartelle di lavoro, fogli di lavoro, intervalli, ecc. Sono tutte raccolte. In questo articolo, impareremo le raccolte VBA.

Che cos’è una raccolta in VBA?

Una raccolta è un tipo di dati che memorizza un tipo simile di oggetti proprio come gli array. Ma a differenza degli array, le sue dimensioni possono essere aumentate o diminuite dinamicamente secondo i requisiti.

Puoi aggiungere, trovare, recuperare ed eliminare elementi dalle raccolte.

A differenza degli array, non è possibile modificare i valori degli elementi nelle raccolte. Se lo desideri, utilizza gli array come elemento nella raccolta.

Una raccolta ha 4 proprietà o metodi ad essa associati.

Collection.Add

Collection.Item

Collection.Count

Collection.Remove

Attraverso questo articolo, esploreremo l’uso di queste proprietà.

Come creare una raccolta in VBA?

Una collezione è un oggetto quindi è necessario dichiararlo e inizializzarlo. Come qualsiasi altro oggetto in VBA, esistono due metodi per creare una raccolta in VBA.

1. Creazione istantanea

Dim items as new Collection

Nel metodo sopra, l’oggetto viene creato istantaneamente. Puoi iniziare a utilizzare questa raccolta immediatamente per le tue esigenze.

image

2. Creazione ritardata

Dim items as Collection

Set items = New Collection

In questo metodo, prima creiamo un riferimento di raccolta e quando richiesto inizializziamo con un oggetto di raccolta. Utilizzando questo metodo puoi scegliere di creare la collezione in base ad alcuni criteri.

image

Aggiunta di elementi a una raccolta (Collection.Add)

Usiamo il metodo Aggiungi per aggiungere nuovi elementi a una raccolta.

items.Add "Apples"

Il codice precedente aggiungerà la stringa “Apples” nella raccolta.

items.Add 1.4

Il codice sopra aggiungerà il doppio 1.4 alla fine della raccolta.

image

Possiamo anche definire le chiavi di questi elementi. Queste chiavi possono essere utilizzate per accedere agli elementi nella raccolta.

image

Inserimento di oggetti nella collezione prima o dopo un oggetto esistente

Il metodo Add aggiunge nuovi elementi alla fine della raccolta. Il metodo add ha quattro parametri.

Add(item,[Key],[Before],[After])

Il primo argomento è necessario. È l’oggetto o che vuoi aggiungere alla collezione. Gli argomenti di riposo sono facoltativi. Vedremo gli usi di questi argomenti in questa sezione.

Se vogliamo aggiungere qualche elemento prima o dopo un indice / chiave perticolare, allora usiamo i parametri Before e After del metodo Add.

items.Add True, "b", "cnst"

'Or

items.Add True, Before:="cnst"

Entrambe le righe inseriranno un valore booleano prima della chiave “cnst” negli elementi della raccolta VBA.

Per inserire un elemento dopo un indice / elemento / chiave perticolare usiamo il parametro After del metodo Add.

'inserting "Mango" with key "m" after key "cnst"

items.Add "Mango", Key:="m", after:="b"

La riga sopra inserirà “Mango” con la chiave “m” dopo la chiave “b”.

image

Nota: * Le chiavi degli elementi devono essere uniche. Qualsiasi chiave già esistente nella raccolta non verrà accettata. VBA restituirà un errore che “la chiave è già associata a un elemento di questa raccolta”.

image

Possiamo usarlo a nostro vantaggio per ottenere un elenco unico dalla raccolta.

Accedi agli elementi della collezione (Collection.Item)

Esistono due metodi per accedere agli elementi di una raccolta. . CollectionName (“index / key”)

  1. CollectionName.Item (“index / key”)

Ad esempio, per accedere a un membro in una raccolta elementi * all’indice 1 e alla chiave “apl”, posso utilizzare uno qualsiasi dei seguenti codici VBA.

Debug.Print items.Item(1)

--

Debug.Print items(1)

--

Debug.Print items.Item("apl")

--

Debug.Print items("apl")

image

Come ottenere il conteggio degli elementi in una raccolta? (Collection.Count)

Per ottenere il numero totale di oggetti o elementi in una raccolta, utilizziamo la funzione .Count della raccolta. Il metodo .Count restituisce il numero totale di elementi nella raccolta.

items.Count

La riga sopra fornirà il conteggio degli oggetti presenti nella raccolta.

Come accedere a tutti gli elementi di una collezione?

L’unico modo per accedere a tutti gli elementi della raccolta in VBA sono i loop.

Ripetiamo ogni elemento della raccolta per accedervi. Per questo usiamo il ciclo for. Il ciclo for-each è considerato il modo più veloce e pulito per accedere agli oggetti della raccolta.

Looping attraverso una raccolta in VBA

Esistono vari modi per scorrere la raccolta in VBA. Useremo più elegante per ogni ciclo per iterare attraverso la raccolta.

Troppo scorrere ogni elemento di una raccolta usa questa riga di codice VBA.

For Each itm In items

Debug.Print itm

Next itm

image

Rimozione di elementi da una raccolta (Collection.Remove)

Per rimuovere un elemento da una raccolta vba, possiamo utilizzare il metodo Remove. Il metodo remove accetta un argomento. Può essere l’indice o la chiave dell’elemento (se disponibile).

items.Remove (1) 'using index

--

items.Remove 1

--

items.Remove ("apl") 'using key

--

items.Remove "apl"

Eliminazione della raccolta in VBA

Bene, non puoi eliminare una raccolta in vba. Tuttavia, puoi rimuovere tutti gli elementi di quella raccolta impostandola di nuovo come nuova raccolta.

Set items = New Collection

Questa riga di codice creerà una nuova raccolta sull’indirizzo degli elementi.

Quindi la nostra raccolta verrà svuotata.

image

Array vs Collection in VBA

  1. Array size is predefined. The size of array can not be changed

normally.

  1. Array’s can hold only same type of data and the type must be declared

first.

  1. Indexing in array starts from 0

  2. Array members does not have any associated key.

  3. Arrays are mutable. You can change the values of its members.

  1. Collection’s size changes as items are added or removed.

  2. A collection can hold any number of data type. As you have seen in the

above examples.

  1. Indexing in VBA Collection starts from 1.

  2. Collection members can have keys associated with.

  3. Collections are immutable. You cannot change values of its member

directly.

Quindi sì ragazzi, queste sono le basi delle collezioni. Ci sono molti vantaggi e usi della raccolta VBA negli strumenti per ufficio. Li esploreremo insieme. Fino ad allora, se avete domande sulla raccolta o su qualsiasi cosa relativa a Excel / VBA, mettetela nella sezione commenti qui sotto.