VBA ReDim

Excel VBA ReDim-Anweisung

Die VBA Redim- Anweisung ähnelt der dim-Anweisung, der Unterschied besteht jedoch darin, dass sie zum Speichern oder Zuweisen von mehr Speicherplatz oder zum Verringern des Speicherplatzes einer Variablen oder eines Arrays verwendet wird. Jetzt werden bei der Anweisung Preserve zwei wichtige Aspekte verwendet: Wenn bei dieser Anweisung die Aufbewahrung verwendet wird, wird ein neues Array mit einer anderen Größe erstellt. Wenn bei dieser Anweisung die Aufbewahrung nicht verwendet wird, wird lediglich die Arraygröße der aktuellen Variablen geändert.

Arrays sind ein wichtiger Bestandteil der VBA-Codierung. Mit Arrays können wir mehr als einen Wert in derselben von uns definierten Variablen speichern. Ähnlich wie wir die Variable mit dem Wort "Dim" deklarieren, müssen wir auch den Array-Namen mit "Dim" deklarieren.

Um den Array-Namen zu deklarieren, müssen wir zuerst die Art des Arrays identifizieren, das wir definieren möchten. In Arrays haben wir 5 Typen.

  1. Statisches Array
  2. Dynamisches Array
  3. Eindimensionales Array
  4. Zweidimensionales Array
  5. Mehrdimensionales Array

Im statischen Array in Excel werden wir den unteren und oberen Wert des Arrays frühzeitig festlegen, während wir die Variable deklarieren. Schauen Sie sich zum Beispiel das folgende Beispiel an.

Code:

 Sub ReDim_Example1 () Dim MyArray (1 bis 5) As String End Sub 

Hier ist MyArray der Name des Arrays, das den Wert von 1 bis 5 enthalten kann. MyArray kann 5 verschiedene Ergebnisse enthalten, wie das folgende.

Code:

 Sub ReDim_Example1 () Dim MyArray (1 bis 5) As String MyArray (1) = "Hi" MyArray (2) = "Good" MyArray (3) = "Morning" MyArray (4) = "Have a" MyArray (5) = "Nice Day" End Sub 

Dynamisches Array mit ReDim-Anweisung

Im dynamischen Array ist dies jedoch nicht der Fall. Wir werden den unteren und oberen Wert nicht rechtzeitig festlegen, sondern nur den Namen des Arrays definieren und den Datentyp zuweisen.

 Sub ReDim_Example1 () Dim MyArray () As String End Sub 

Um den Namen des Arrays dynamisch zu gestalten, müssen wir ihn zuerst mit dem Wort „Dim“ deklarieren, aber die Größe des Arrays nicht rechtzeitig festlegen. Wir benennen nur ein Array mit leeren Werten in der Klammer (). Wenn das Array keine Größe enthält, wird es als dynamisches Array behandelt.

Dim MyArray () As String

Sobald Sie die Größe des Arrays in Klammern angeben, wird es zu einem statischen Array. Dim MyArray (1 bis 5) als String

Im dynamischen Array ändern wir die Größe des Arrays immer, indem wir das Wort „ReDim“ in der nächsten Codezeile verwenden.

ReDim MyArray (1 bis 6) als Zeichenfolge

Jeder Wert, der in den vorherigen Schritten im Array-Namen gespeichert wurde, dh mit der Anweisung "Dim", steht für null, und die Größe, die wir mit "ReDim" deklariert haben, wird zur neuen Größe des Arrays.

Beispiele für die Verwendung der VBA Redim-Anweisung

Sie können diese VBA ReDim Excel-Vorlage hier herunterladen - VBA ReDim Excel-Vorlage

Beispiel 1

Schauen Sie sich das Beispiel der praktischen Verwendung der Anweisung „ReDim“ an. Befolgen Sie die folgenden Schritte, um "ReDim" anzuwenden.

Schritt 1: Erstellen Sie zuerst einen Makronamen.

Schritt 2: Deklarieren Sie einen Array-Namen als Zeichenfolge.

Code:

 Sub ReDim_Example1 () Dim MyArray () As String End Sub 

Schritt 3: Verwenden Sie nun das Wort "Redim" und weisen Sie die Größe des Arrays zu.

Code:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 bis 3) End Sub 

Schritt 4: Jetzt kann der Array-Name "MyArray" hier bis zu 3 Werte enthalten. Weisen Sie diesen 3 Arrays den Wert wie im folgenden zu.

Code:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 bis 3) MyArray (1) = "Willkommen" MyArray (2) = "to" MyArray (3) = "VBA" End Sub 

Das erste Array ist also gleich dem Wort "Welcome", das zweite Array ist gleich dem Wort "to" und das dritte Array ist gleich dem Wort "VBA".

Schritt 5: Speichern Sie nun diese Array-Werte in Zellen.

Code:

 Sub ReDim_Example1 () Dim MyArray () As String ReDim MyArray (1 bis 3) MyArray (1) = "Welcome" MyArray (2) = "to" MyArray (3) = "VBA" Range ("A1"). Value = MyArray (1) Bereich ("B1"). Wert = MyArray (2) Bereich ("C1"). Wert = MyArray (3) End Sub 

Schritt 6: Wenn Sie diesen Code ausführen, sollten diese Werte in den Zellen A1, B1 und C1 vorhanden sein.

Beispiel 2 - Ändern Sie die Größe der Array-Größe, während Sie sich an die alten Werte erinnern.

Sobald der Array-Name Werte zugewiesen hat, können wir die Größe auch zu jedem Zeitpunkt der Prozedur mithilfe des Wortes „ReDim Preserve“ ändern.

Angenommen, Sie haben bereits einen Array-Namen deklariert und diesen Array-Namen Werte wie den folgenden zugewiesen.

Jetzt möchten Sie die Array-Länge um 2, dh 5 erhöhen. In diesem Fall können wir das Wort VBA „ReDim Preserve“ verwenden, um die Array-Länge zu ändern und die alten Werte ebenfalls zu speichern.

Code:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Willkommen" MyArray (2) = "zu" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Bereich "Zeichen 1" ("A1"). Wert = MyArray (1) Bereich ("B1"). Wert = MyArray (2) Bereich ("C1"). Wert = MyArray (3) Bereich ("D1"). Wert = MyArray (4) End Sub 

Jetzt können wir dem Array zwei weitere Werte zuweisen.

Code:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Willkommen" MyArray (2) = "zu" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Bereich "Zeichen 1" ("A1"). Wert = MyArray (1) Bereich ("B1"). Wert = MyArray (2) Bereich ("C1"). Wert = MyArray (3) Bereich ("D1"). Wert = MyArray (4) End Sub 

Speichern Sie diese Werte nun in Zellen.

Code:

 Sub ReDim_Example2 () Dim MyArray () As String ReDim MyArray (3) MyArray (1) = "Willkommen" MyArray (2) = "zu" MyArray (3) = "VBA" ReDim Preserve MyArray (4) MyArray (4) = Bereich "Zeichen 1" ("A1"). Wert = MyArray (1) Bereich ("B1"). Wert = MyArray (2) Bereich ("C1"). Wert = MyArray (3) Bereich ("D1"). Wert = MyArray (4) End Sub 

Führen Sie nun das Makro aus und sehen Sie, was passiert

Also haben wir das neue Wort in der D1-Zelle.

Der Grund, warum wir das Wort "bewahren" verwenden müssen, weil sich das Array an die alten Array-Werte in der Prozedur erinnern sollte.

Sobald Sie das Wort "bewahren" ignorieren, werden keine alten Werte mehr gespeichert.

Dinge, an die man sich hier erinnern sollte

  • ReDim kann nur den letzten Wert des Arrays enthalten, nicht die vielen Werte. Beispielsweise können wir diesen Code "ReDim Preserve MyArray (4 bis 5)" nicht verwenden. Dadurch wird der Fehler ausgegeben.
  • Wir können keine statischen ReDim-Arrays erstellen. Sobald Sie die Größe des Arrays in Klammern zuweisen, wird es zu einem statischen Array.
  • Mit ReDim können wir den Datentyp nicht ändern. Das Array kann jeden Datentyp enthalten, den wir beim Deklarieren des Arrays zugewiesen haben.