/ / Dynamisches Array in Excel VBA

Dynamisches Array in Excel VBA

Wenn die Größe Ihres Arrays zunimmt und Sie die Größe des Arrays nicht korrigieren möchten, können Sie die ReDim-Schlüsselwort. Excel VBA ändert dann automatisch die Größe des Arrays.

Fügen Sie der Spalte A einige Zahlen hinzu.

Dynamisches Array in Excel VBA

Fügen Sie eine Befehlsschaltfläche in Ihrem Arbeitsblatt ein, und fügen Sie die folgenden Codezeilen hinzu:

1. Zuerst deklarieren wir das Array mit den Nummern. Deklarieren Sie auch zwei Variablen vom Typ Integer. Eine benannte Größe und eine nannte ich.

Dim numbers() As Integer, size As Integer, i As Integer

Hinweis: Das Array hat noch keine Größe. Zahlen, Größe und ich werden hier zufällig ausgewählt, Sie können beliebige Namen verwenden. Denken Sie daran, im Rest Ihres Codes auf diese Namen zu verweisen.

2. Als nächstes bestimmen wir die Größe des Arrays und speichern es in der Variablengröße. Dazu können Sie die Arbeitsblattfunktion CountA verwenden. Fügen Sie die folgende Codezeile hinzu:

size = WorksheetFunction.CountA(Worksheets(1).Columns(1))

3. Wir kennen jetzt die Größe des Arrays und können es neu dimensionieren. Fügen Sie die folgende Codezeile hinzu:

ReDim numbers(size)

4. Als nächstes initialisieren wir jedes Element des Arrays. Wir benutzen eine Schleife.

For i = 1 To size
    numbers(i) = Cells(i, 1).Value
Next i

5. Wir zeigen das letzte Element des Arrays mit einer MsgBox an.

MsgBox numbers(size)

6. Beenden Sie den Visual Basic-Editor, und klicken Sie auf die Befehlsschaltfläche auf dem Blatt.

Ergebnis:

Letztes Element des Arrays

7. Nun um klar zu sehen, warum dies ein dynamisches Array genannt wird, fügen Sie der Spalte A eine Zahl hinzu.

Nummer hinzufügen

8. Klicken Sie erneut auf die Befehlsschaltfläche.

Dynamisches Array-Ergebnis

Fazit: Excel VBA hat die Größe dieses dynamischen Arrays automatisch geändert.

9. Wenn Sie das Schlüsselwort ReDim verwenden, löschen Sie alle vorhandenen Daten, die derzeit im Array gespeichert sind. Fügen Sie dem zuvor erstellten Code beispielsweise die folgenden Codezeilen hinzu:

ReDim numbers(3)
MsgBox numbers(1)

Ergebnis:

Ohne zu konservieren

Das Array ist leer.

10. Wenn Sie die Daten im vorhandenen Array bei der Neudimensionierung beibehalten möchten, verwenden Sie das Schlüsselwort Preserve.

ReDim Preserve numbers(3)
MsgBox numbers(1)

Ergebnis:

Mit Preserve

Lesen Sie auch: