Come utilizzare le raccolte VBA in Excel

Anonim


Una raccolta è un tipo di dati che contiene oggetti di archivio 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 a conoscere 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 puoi modificare i valori degli elementi nelle raccolte. Se lo desideri, usa gli array come elemento nella raccolta.

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

 Raccolta.Aggiungi Raccolta.Oggetto Raccolta.Conta Raccolta.Rimuovi 

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

Oggetti sbiaditi come nuova Collezione

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

2. Creazione ritardata

 Dim oggetti come oggetti del set di raccolta = Nuova collezione 

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

Aggiunta di elementi a una raccolta (Collection.Add)
Usiamo il metodo Add per aggiungere nuovi elementi a una raccolta.

oggetti.Aggiungi "Mele"

Il codice sopra aggiungerà la stringa "Mele" nella raccolta.

elementi.Aggiungi 1.4

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

Possiamo anche definire chiavi per questi elementi. Queste chiavi possono essere utilizzate per accedere agli oggetti in collezione.

Inserimento di elementi nella raccolta prima o dopo un elemento esistente

Il metodo Add aggiunge nuovi elementi alla fine della raccolta.

Il metodo add ha quattro parametri.

Aggiungi(elemento,[Chiave],[Prima],[Dopo])

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 qualche indice/chiave perticolare, allora usiamo i parametri Before e After del metodo Add.

items.Add True, "b", "cnst" 'O 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 specifico si usa il parametro After del metodo Add.

'inserendo "Mango" con la chiave "m" dopo la chiave "cnst" elementi.Aggiungi "Mango", Chiave:="m", dopo:="b"

La riga sopra inserirà "Mango" con il tasto "m" dopo il tasto "b".

Nota: Le chiavi degli elementi devono essere univoche. Eventuali chiavi già presenti nella raccolta non verranno accettate. VBA restituirà un errore che "la chiave è già associata a un elemento di questa raccolta".

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.

  1. NomeRaccolta ("indice/chiave")
  2. NomeRaccolta.Elemento("indice/chiave")

Ad esempio, per accedere a un membro in una raccolta Oggetti all'indice 1 e alla chiave "apl", posso utilizzare uno qualsiasi dei codici VBA seguenti.

Debug.Print items.Item(1) -- Debug.Print items(1) -- Debug.Print items.Item("apl") -- Debug.Print items("apl")


Come ottenere il conteggio degli elementi in una raccolta? (Conteggio.raccolta)
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.

 articoli.Conteggio

La riga sopra darà il conteggio degli oggetti della collezione.

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. Eseguiamo un'iterazione su ogni elemento della raccolta per accedervi. Per questo usiamo for loop. Il ciclo for-each è considerato il modo più veloce e pulito per accedere agli oggetti della raccolta.
Loop attraverso una raccolta in VBA

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

Troppo passa attraverso ogni elemento di una raccolta usa semplicemente questa riga di codice VBA.

Per ogni elemento In elementi Debug.Print itm Next itm


Rimozione di elementi da una raccolta (Collection.Remove)

Per rimuovere un elemento da una raccolta vba, possiamo usare 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 nuovamente come nuova raccolta.

Oggetti impostati = Nuova collezione

Questa riga di codice creerà una nuova raccolta sull'indirizzo degli articoli. Quindi la nostra collezione sarà svuotata.

Array vs Collection in VBA

    Vettore

  1. La dimensione dell'array è predefinita. La dimensione dell'array non può essere modificata normalmente.
  2. Gli array possono contenere solo lo stesso tipo di dati e il tipo deve essere dichiarato per primo.
  3. L'indicizzazione nell'array inizia da 0
  4. I membri dell'array non hanno alcuna chiave associata.
  5. Gli array sono mutevoli. È possibile modificare i valori dei suoi membri.

    Collezione

  1. Le dimensioni della raccolta cambiano man mano che gli elementi vengono aggiunti o rimossi.
  2. Una raccolta può contenere un numero qualsiasi di tipi di dati. Come hai visto negli esempi precedenti.
  3. L'indicizzazione in VBA Collection inizia da 1.
  4. Ai membri della raccolta possono essere associate chiavi.
  5. Le collezioni sono immutabili. Non è possibile modificare direttamente i valori del suo membro.

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 hai domande sulla raccolta o su qualsiasi cosa relativa a Excel/VBA, scrivi nella sezione commenti qui sotto.