Dynamic Array in Excel VBA
Wenn die Größe des Arrays erhöht und Sie nicht über die Größe des Arrays beheben möchten, können Sie die ReDim-Schlüsselwort verwenden. Excel VBA ändert dann die Größe des Arrays automatisch.
Fügen Sie einige Zahlen auf Spalte A.
Platzieren Sie eine Befehlstaste auf dem Arbeitsblatt und fügen Sie die folgenden Codezeilen:
-
Zuerst erklären wir die Array mit dem Namen Zahlen. Auch deklariert zwei Variablen vom Typ Integer. Eine benannte Größe und ein i genannt.
Dim numbers() As Integer, size As Integer, i As Integer
Hinweis: Das Array hat noch keine Größe. Zahlen, Größe und ich hier zufällig ausgewählt sind, können Sie keine Namen verwenden. Denken Sie daran, diese Namen in dem Rest des Codes zu beziehen.
-
Als nächstes wir die Größe des Arrays bestimmen und in die variable Größe speichern. Sie können die Tabellenfunktion COUNTA für diese. Fügen Sie die folgende Codezeile:
size = WorksheetFunction.CountA(Worksheets(1).Columns(1))
-
Wir kennen jetzt die Größe des Arrays und wir können es dimensionieren. Fügen Sie die folgende Codezeile:
ReDim numbers(size)
-
Als nächstes initialisieren wir jedes Element des Arrays. Wir verwenden eine Schleife.
For i = 1 To size numbers(i) = Cells(i, 1).Value Next i
-
Wir zeigen das letzte Element des Arrays ein MsgBox verwenden.
MsgBox numbers(size)
-
Um den Visual Basic-Editor verlassen und auf das Befehlsschaltflächen auf dem Blatt klicken.
Ergebnis:
-
Nun, klar zu sehen, warum dies ein dynamisches Array genannt wird, eine Nummer Spalte A hinzufügen
-
Klicken Sie erneut auf den Befehlsschaltflächen.
Fazit: Excel VBA hat automatisch die Größe dieses dynamischen Arrays geändert.
-
Wenn Sie die ReDim-Schlüsselwort verwenden, löschen Sie alle vorhandenen Daten, die derzeit in dem Array gespeichert. Zum Beispiel, fügen Sie die folgenden Codezeilen zu dem zuvor erstellten Code:
ReDim numbers(3) MsgBox numbers(1)
Ergebnis:
Das Array ist leer.
-
Wenn Sie die Daten in das bestehende Array erhalten wollen, wenn Sie es dimensionieren, verwenden Sie das Preserve-Schlüsselwort.
ReDim Preserve numbers(3) MsgBox numbers(1)
Ergebnis: