Wie erstelle ich eine dynamische tabelle in vba?
Bei einem dynamischen Array können Sie die Größe des Arrays ändern und ihm beim Ausführen des Codes mehr Wert hinzufügen. In diesem Tutorial erkunden wir Möglichkeiten zum Schreiben von Code, bei dem Sie sowohl die Größe ändern als auch weitere Elemente hinzufügen können.
Erstellen Sie eine dynamische Tabelle in VBA
- Deklarieren Sie zunächst ein Array mit seinem Namen.
- Danach ließ die Anzahl der Elemente die Klammern leer.
- Verwenden Sie nun die ReDim-Anweisung.
- Geben Sie am Ende die Anzahl der Elemente an, die Sie dem Array hinzufügen möchten.
Dim myArray() As String ReDim myArray(5)
Vergessen Sie nicht, diesen Artikel von Joshua über die Leistung fester und dynamischer Arrays zu lesen.
Dynamisches mehrdimensionales Array
Das von uns verwendete Beispiel war ein eindimensionales Array und auf die gleiche Weise verwenden Sie auch die ReDim-Anweisung, um dynamische mehrdimensionale Arrays zu erstellen.
Dim myArray() As String ReDim myArray(5, 8)
Fügen Sie in VBA ein neues Element zu einem dynamischen Array hinzu
Ein dynamisches Array ist bedeutungslos, wenn Sie ihm kein neues Element hinzufügen können. Im nächsten Beispiel werden wir sehen, wie Sie neue Elemente hinzufügen, nachdem Sie die Anzahl der Elemente in einem Array neu definiert haben.
'declaring array with no element. '--------------------- Dim iNames() As String '--------------------- 'declaring variables to store counter _ 'and elements from the range. '---------------------- Dim iCount As Integer Dim iElement As Integer '---------------------- 'get the last row number to decide the _ 'number of elements for the array. '------------------------------------ iCount = Range("A1").End(xlDown).Row '------------------------------------ 're-defining the elements for the array. '------------------- ReDim iNames(iCount) '------------------- 'using a for loop to add elements in the array 'from the range starting from cell A1 '-------------------------------------------------- For iElement = 1 To iCount iNames(iElement - 1) = Cells(iElement, 1).Value Next iElement '-------------------------------------------------- 'print all the elements from the 'to the immediate window '-------------------- Debug.Print iNames(0) Debug.Print iNames(1) Debug.Print iNames(2) '--------------------
Lassen Sie uns diesen Code Schritt für Schritt verstehen.
- Im ersten Schritt haben Sie ein Array mit dem Namen „myArray“ deklariert.
- Danach haben Sie zwei Variablen zum Speichern der Zählerwerte für die Schleife, die Sie später im Code verwenden müssen, um Werte aus dem Bereich abzurufen und diese Werte als Elemente zum Array hinzuzufügen.
- Dann haben Sie eine Codezeile, um die letzte Zeile des Bereichs abzurufen, die Ihnen hilft zu wissen, welche Elemente Sie dem Array hinzufügen müssen.
- Im vierten Schritt haben Sie die ReDim-Anweisung verwendet, um die Array-Elemente unter Verwendung der letzten im vorherigen Schritt erhaltenen Zeilennummer neu zu definieren.
- Dann haben Sie FOR LOOP (For Next), das den Bereich ausgehend von Zelle A1 durchläuft, Werte von dort übernimmt und sie nacheinander als Elemente zum Array hinzufügt.
- Am Ende verfügen Sie über die Debug.Print-Anweisung, um alle Elemente im unmittelbaren Fenster zu drucken.
Und wenn ich dem Bereich einen neuen Wert hinzufüge und den Code erneut ausführe, wird dieses Element automatisch zum Array hinzugefügt und im unmittelbaren Fenster gedruckt.