In diesem Tutorial wird gezeigt, wie Sie Arrays von Objekten in VBA erstellen und verwenden.
In VBA sind Arrays Variablen, die mehrere Werte speichern. Sie können VBA-Objekte genauso in Arrays speichern wie alle anderen Daten.
Deklarieren des Objektarrays
In diesem Beispiel deklarieren wir ein Array von VBA-Arbeitsblättern:
1 | Dim arWks(3) als Arbeitsblatt |
Auffüllen eines statischen Objektarrays
Deklarieren Sie das Objektarray als statisch, und dann können Sie das Array mit den Blättern füllen, die Sie aus Ihrer Arbeitsmappe auswählen.
12345678 | Unter TestObjArray()'Array als Arbeitsblatt-Array definierenDim arWks(1 bis 3) als Arbeitsblatt'3 Blatt in das Array hinzufügenset arWks(1) = Sheets(1)set arWks(2) = Sheets(2)Set arWks(3) = Sheets(3)End Sub |
Auffüllen eines dynamischen Objektarrays
Sie können das Objektarray als dynamisch deklarieren und dann die Blätter in der Arbeitsmappe zählen, bevor Sie dem Objektarray die Arraygröße zuweisen.
1234567891011121314 | Unter TestObjArray()'Array als Arbeitsblatt-Array definierenDim arWks() als Arbeitsblatt'zählen Sie, wie viele Arbeitsblätter in der Datei sind, und dimmen Sie das Array erneutDim n As IntegerDim i As Integer'Zähle die Blätter und minus eins, um die Grenzen für das Array festzulegenn = Application.Sheets.Count - 1ReDim arWks(n)'Füllen Sie das Arbeitsblatt-Array mit allen Blättern in der ArbeitsmappeFür i = LBound(arWks) zu UBound(arWks)Set arWks(i) = ActiveWorkbook.Sheets(i + 1)Als nächstesEnd Sub |
Im obigen Beispiel deklarieren wir zuerst das Arbeitsblatt-Array. Wir zählen dann die Anzahl der Blätter in der Arbeitsmappe und weisen diesen Wert minus eins dem UBound des Arrays zu. Dies liegt daran, dass die LBound des Arrays mit 0 beginnt. Schließlich durchlaufen wir die Blätter und fügen jedes Blatt dem Array hinzu.
Verwenden des Objektarrays in VBA-Code
Sobald wir das Array Worksheet gefüllt haben, können wir VBA verwenden, um das Array zu durchlaufen.
123456789101112131415161718 | Unter TestObjArray()'Array als Arbeitsblatt-Array definierenDim arWks() als Arbeitsblatt'zählen Sie, wie viele Arbeitsblätter in der Datei sind, und dimmen Sie das Array erneutDim n As IntegerDim i As Integer'Zähle die Blätter und minus eins, um die Grenzen für das Array festzulegenn = Application.Sheets.Count - 1ReDim arWks(n)'Füllen Sie das Arbeitsblatt-Array mit allen Blättern in der ArbeitsmappeFür i = LBound(arWks) zu UBound(arWks)Set arWks(i) = ActiveWorkbook.Sheets(i + 1)Als nächstes'mache etwas mit jedem Blatt im ArrayFür i = LBound(arWks) zu UBound(arWks)arWks(i).Range("A1:H1").Font.Bold = TrueAls nächstesEnd Sub |
Im obigen Beispiel durchlaufen wir das Array und fetten die erste Zeile jedes Blatts im Array.