VBA ReDim - Behandeln Sie dynamische Arrays mit VBA ReDim Preserve

Inhaltsverzeichnis

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. Mithilfe von Arrays können wir mehr als einen Wert in derselben von uns definierten Variablen speichern. So wie wir die Variable mit dem Wort "Dim" deklarieren, müssen wir den Array-Namen auch 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 weit im Voraus 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 lange im Voraus entscheiden. Stattdessen definieren wir einfach den Array-Namen und weisen den Datentyp zu.

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 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

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 entspricht also dem Wort "Willkommen", das zweite Array entspricht dem Wort "to" und das dritte Array entspricht 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 A1-, B1- und C1-Zellen vorhanden sein.

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

Sobald dem Arraynamen Werte zugewiesen wurden, können wir die Größe auch zu jedem Zeitpunkt der Prozedur ändern, indem wir das Wort "ReDim Preserve" verwenden.

Assume you have already declared an array name and assigned values to those array name like the below one.

Now you would like to increase the array length by 2, i.e., 5. In this case, we can use the word VBA “ReDim Preserve” to resize the array length to remember the old values as well.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now we can assign two more values to the array.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now store these values in cells.

Code:

Sub ReDim_Example2() Dim MyArray() As String ReDim MyArray(3) MyArray(1) = "Welcome" MyArray(2) = "to" MyArray(3) = "VBA" ReDim Preserve MyArray(4) MyArray(4) = "Character 1" Range("A1").Value = MyArray(1) Range("B1").Value = MyArray(2) Range("C1").Value = MyArray(3) Range("D1").Value = MyArray(4) End Sub

Now run the macro and see what happens.

So we got the new word in the D1 cell.

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. Dies wird den Fehler auslösen.
  • 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.

Interessante Beiträge...