Deze zelfstudie laat zien hoe u arrays van objecten in VBA kunt maken en gebruiken.
In VBA zijn arrays variabelen die meerdere waarden opslaan. U kunt VBA-objecten op dezelfde manier in arrays opslaan als andere gegevens.
De objectmatrix declareren
In dit voorbeeld declareren we een reeks VBA-werkbladen:
1 | Dim arWks(3) als werkblad |
Een statisch objectarray vullen
Verklaar de objectarray als statisch en dan kunt u de array vullen met de bladen die u in uw werkmap selecteert.
12345678 | SubtestObjArray()'definieer de array als een werkbladarray'Dim arWks (1 tot 3) als werkblad'voeg 3 bladen toe aan de array'set arWks(1) = Bladen(1)set arWks(2) = Bladen(2)Set arWks(3) = Bladen(3)Einde sub |
Een dynamische objectmatrix vullen
U kunt de objectarray als dynamisch declareren en vervolgens de bladen in de werkmap tellen voordat u de arraygrootte aan de objectarray toewijst.
1234567891011121314 | SubtestObjArray()'definieer de array als een werkbladarray'Dim arWks() als werkblad'tel hoeveel werkbladen in het bestand en dim de array opnieuw'Dim n als geheel getalDim ik als geheel getal'tel de vellen en min één om de grenzen voor de array in te stellen'n = Application.Sheets.Count - 1ReDim arWks(n)'vul de werkbladarray met alle bladen in de werkmap'Voor i = LBound(arWks) naar UBound(arWks)Stel arWks(i) = ActiveWorkbook.Sheets(i + 1) involgende iEinde sub |
In het bovenstaande voorbeeld declareren we eerst de Worksheet Array. We tellen dan het aantal vellen in de werkmap en kennen die waarde min één toe aan de UBound van de array. Dit komt door het feit dat de LBound van de array begint als 0. Ten slotte doorlopen we de bladen en voegen we elk blad toe aan de array.
De objectarray gebruiken in VBA-code
Nadat we de werkbladarray hebben gevuld, kunnen we VBA gebruiken om door de array te bladeren.
123456789101112131415161718 | SubtestObjArray()'definieer de array als een werkbladarray'Dim arWks() als werkblad'tel hoeveel werkbladen in het bestand en dim de array opnieuw'Dim n als geheel getalDim ik als geheel getal'tel de vellen en min één om de grenzen voor de array in te stellen'n = Application.Sheets.Count - 1ReDim arWks(n)'vul de werkbladarray met alle bladen in de werkmap'Voor i = LBound(arWks) naar UBound(arWks)Stel arWks(i) = ActiveWorkbook.Sheets(i + 1) involgende i'doe iets aan elk blad in de array'Voor i = LBound(arWks) naar UBound(arWks)arWks(i).Bereik("A1:H1").Lettertype.Bold = Truevolgende iEinde sub |
In het bovenstaande voorbeeld doorlopen we de array en maken we de eerste rij van elk blad in de array vet.