VBA – Objekt-Array
In this Article
In diesem Tutorial zeigen wir Ihnen, wie Sie Objekt-Arrays in VBA erstellen und verwenden können.
In VBA sind Arrays Variablen, die mehrere Werte speichern. Sie können VBA-Objekte in Arrays auf die gleiche Weise speichern wie alle anderen Daten.
Objekt-Arrays deklarieren
In diesem Beispiel deklarieren wir ein Array von VBA-Arbeitsblättern:
Dim arWks(3) As Worksheet
Auffüllen eines statischen Objekt-Arrays
Deklarieren Sie das Objekt-Array als statisch, dann können Sie das Array mit den Blättern, die Sie aus Ihrer Arbeitsmappe auswählen, auffüllen.
Sub TestObjArray()
'das Array als Arbeitsblatt-Array definieren
Dim arWks(1 To 3) As Worksheet
'3 Arbeitsblätter in das Array einfügen
set arWks(1) = Sheets(1)
set arWks(2) = Sheets(2)
Set arWks(3) = Sheets(3)
End Sub
Auffüllen eines dynamischen Objekt-Arrays
Bevor Sie dem Objekt-Array die Größe zuweisen, können Sie ihn als dynamisch deklarieren und dann die Blätter in der Arbeitsmappe zählen.
Sub TestObjArray()
'Das Array als Arbeitsblatt-Array definieren
Dim arWks() As Worksheet
'Zählen, wie viele Arbeitsblätter in der Datei sind und das Array erneut verkleinern
Dim n As Integer
Dim i As Integer
'die Blätter zählen und die Anzahl um eins reduzieren, um die Array-Grenzen festzulegen
n = Application.Sheets.Count - 1
ReDim arWks(n)
'Das Arbeitsblatt-Array mit allen Blättern der Arbeitsmappe auffüllen
For i = LBound(arWks) to UBound(arWks)
Set arWks(i) = ActiveWorkbook.Sheets(i + 1)
Next i
End Sub
Im obigen Beispiel deklarieren wir zunächst das Arbeitsblatt-Array. Wir bestimmen dann die Anzahl der Blätter in der Arbeitsmappe und weisen diesen Wert minus eins dem Array-UBound zu. Dies ist auf die Tatsache zurückzuführen, dass das Array-LBound mit 0 beginnt. Schließlich durchlaufen wir die Blätter in einer Schleife und fügen jedes Blatt dem Array hinzu.
Verwendung des Objekt-Arrays in VBA-Code
Sobald wir das Worksheet-Array aufgefüllt haben, können wir es mit VBA in einer Schleife durchlaufen.
Sub TestObjArray()
'Das Array als Arbeitsblatt-Array definieren
Dim arWks() As Worksheet
'Zählen, wie viele Arbeitsblätter in der Datei enthalten sind und das Array erneut verkleinern
Dim n As Integer
Dim i As Integer
'Die Blätter zählen und die Anzahl um eins reduzieren, um die Array-Grenzen festzulegen
n = Application.Sheets.Count - 1
ReDim arWks(n)
'das Arbeitsblatt-Array mit allen Blättern der Arbeitsmappe auffüllen
For i = LBound(arWks) to UBound(arWks)
Set arWks(i) = ActiveWorkbook.Sheets(i + 1)
Next i
'Etwas mit jedem Blatt im Array machen
For i = LBound(arWks) To UBound(arWks)
arWks(i).Range("A1:H1").Font.Bold = True
Next i
End Sub
Im obigen Beispiel durchlaufen wir das Array in einer Schleife und setzen die Schrift der ersten Zeile jedes Blattes in diesem Array auf fett.