Questo tutorial dimostrerà come creare e utilizzare array di oggetti in VBA.
In VBA, gli array sono variabili che memorizzano più valori. Puoi archiviare oggetti VBA in array nello stesso modo in cui memorizzeresti qualsiasi altro dato.
Dichiarazione dell'array di oggetti
In questo esempio, dichiareremo un array di fogli di lavoro VBA:
1 | Dim arWks(3) come foglio di lavoro |
Popolamento di un array di oggetti statici
Dichiarare l'array di oggetti statico, quindi è possibile popolare l'array con i fogli selezionati dalla cartella di lavoro.
12345678 | Sub TestObjArray()'definire l'array come array di fogli di lavoroDim arWks (da 1 a 3) come foglio di lavoro'aggiungi 3 fogli nell'arrayset arWks(1) = Fogli(1)set arWks(2) = Fogli(2)Imposta arWks(3) = Fogli(3)Fine sottotitolo |
Popolamento di un array di oggetti dinamici
È possibile dichiarare l'array di oggetti come dinamico e quindi contare i fogli nella cartella di lavoro prima di assegnare la dimensione dell'array all'array di oggetti.
1234567891011121314 | Sub TestObjArray()'definire l'array come array di fogli di lavoroDim arWks() come foglio di lavoro'conta quanti fogli di lavoro nel file e ri-oscura l'arrayDim n As IntegerDim i As Integer'conta i fogli e meno uno per impostare i limiti per l'arrayn = Application.Sheets.Count - 1RiDim arWks(n)'riempi l'array del foglio di lavoro con tutti i fogli nella cartella di lavoroPer i = LBound(arWks) a UBound(arWks)Imposta arWks(i) = ActiveWorkbook.Sheets(i + 1)Avanti ioFine sottotitolo |
Nell'esempio sopra, dichiariamo prima l'array del foglio di lavoro. Quindi contiamo il numero di fogli nella cartella di lavoro e assegniamo quel valore meno uno all'UBound dell'array. Ciò è dovuto al fatto che LBound dell'array inizia come 0. Infine, eseguiamo il ciclo dei fogli e aggiungiamo ciascun foglio all'array.
Utilizzo dell'array di oggetti nel codice VBA
Dopo aver popolato l'array del foglio di lavoro, possiamo usare VBA per scorrere l'array.
123456789101112131415161718 | Sub TestObjArray()'definire l'array come array di fogli di lavoroDim arWks() come foglio di lavoro'conta quanti fogli di lavoro nel file e ri-oscura l'arrayDim n As IntegerDim i As Integer'conta i fogli e meno uno per impostare i limiti per l'arrayn = Application.Sheets.Count - 1ReDim arWks(n)'riempi l'array del foglio di lavoro con tutti i fogli nella cartella di lavoroPer i = LBound(arWks) a UBound(arWks)Imposta arWks(i) = ActiveWorkbook.Sheets(i + 1)Avanti io'fai qualcosa a ogni foglio dell'arrayPer i = LBound(arWks) a UBound(arWks)arWks(i).Range("A1:H1").Font.Bold = TrueAvanti ioFine sottotitolo |
Nell'esempio sopra, eseguiamo il ciclo attraverso l'array e Bold la prima riga di ogni foglio nell'array.