Acest tutorial va demonstra cum să creați și să utilizați matrici de obiecte în VBA.
În VBA, matricile sunt variabile care stochează valori multiple. Puteți stoca obiecte VBA în tablouri în același mod în care ați stoca orice alte date.
Declararea matricei de obiecte
În acest exemplu, vom declara o serie de foi de lucru VBA:
1 | Dim arWks (3) Ca foaie de lucru |
Popularea unui tablou de obiecte statice
Declarați că matricea de obiecte este statică și apoi puteți completa matricea cu foile pe care le selectați din registrul de lucru.
12345678 | Sub TestObjArray ()'definiți matricea ca matrice de foaie de lucruDim arWks (1 - 3) ca foaie de lucru'adăugați 3 coli în matriceset arWks (1) = Foi (1)set arWks (2) = Foi (2)Set arWks (3) = Foi (3)Sfârșitul Sub |
Popularea unui tablou de obiecte dinamice
Puteți declara matricea obiectelor ca fiind dinamică și apoi să numărați foile din registrul de lucru înainte de a atribui dimensiunea matricei matricei de obiecte.
1234567891011121314 | Sub TestObjArray ()'definiți matricea ca matrice de foaie de lucruDim arWks () Ca foaie de lucru'numărați câte foi de lucru din fișier și redimensionați matriceaDim n Ca întregDim i Integer'numărați foile și minus una pentru a seta limitele pentru matricen = Application.Sheets.Count - 1ReDim arWks (n)'completați matricea de foi de lucru cu toate foile din registrul de lucruPentru i = LBound (arWks) la UBound (arWks)Set arWks (i) = ActiveWorkbook.Sheets (i + 1)Apoi euSfârșitul Sub |
În exemplul de mai sus, declarăm mai întâi matricea de foaie de lucru. Apoi numărăm numărul de foi din registrul de lucru și atribuim acea valoare minus una la UBound a matricei. Acest lucru se datorează faptului că LBound-ul matricei începe ca 0. În cele din urmă, facem o buclă prin foi și adăugăm fiecare foaie la matrice.
Utilizarea matricei de obiecte în codul VBA
Odată ce am populat matricea Foaie de lucru, putem folosi VBA pentru a parcurge matricea.
123456789101112131415161718 | Sub TestObjArray ()'definiți matricea ca matrice de foaie de lucruDim arWks () Ca foaie de lucru'numărați câte foi de lucru din fișier și redimensionați matriceaDim n Ca întregDim i Integer'numărați foile și minus una pentru a seta limitele pentru matricen = Application.Sheets.Count - 1ReDim arWks (n)'completați matricea de foi de lucru cu toate foile din registrul de lucruPentru i = LBound (arWks) la UBound (arWks)Set arWks (i) = ActiveWorkbook.Sheets (i + 1)Apoi eu'faceți ceva pentru fiecare foaie din matricePentru i = LBound (arWks) la UBound (arWks)arWks (i) .Range ("A1: H1"). Font.Bold = TrueApoi euSfârșitul Sub |
În exemplul de mai sus, facem o buclă prin matrice și Bold primul rând al fiecărei foi din matrice.