ReDim Preserve 2D Array in Excel VBA (2 einfache Wege)

  • Teile Das
Hugh West

Ein Array ist eine Variable, die dieselben Arten von Daten enthält. Wenn es nur eine Zeile oder eine Spalte von Daten gibt, wird es als eindimensionales Array bezeichnet. Wenn es jedoch mehr als eine Zeile und Spalte gibt, wird es als 2D-Array bezeichnet. Wir verwenden ReDim um die Größe eines Arrays in VBA zu ändern. Zusätzlich verwenden wir die Erhalten Sie Schlüsselwort mit dem ReDim um die alten Daten zu erhalten. Dieser Artikel zeigt Ihnen 2 schnelle Wege zu " ReDim-Konserve " a 2D-Array in Excel-VBA .

Download Arbeitsbuch Praxis

Makro für ReDim Preserve 2D.xlsm

2 praktische Ansätze für ReDim Preserve 2D Array in Excel VBA

Dies ist der Basisdatensatz, der aus einer 2D-Array mit drei Zeilen und zwei Spalten. Zuerst erstellen wir dieses Array. Dann fügen wir eine weitere Spalte zu diesem Array hinzu. Wir verwenden das " ReDim-Konserve "Außerdem werden wir demonstrieren, was passiert, wenn wir dies nicht tun.

Standardmäßig können wir nur die Größe der letzten Dimension des Arrays ändern (d.h. die Spalten oder die obere Grenze). Wir werden das Array transponieren, dann die letzte Dimension ändern und dann wieder transponieren, um die Größe beider Dimensionen des 2D-Array in Excel VBA.

1. reDim Letzte Dimension beibehalten 2D-Array

Wir werden zunächst die 2D-Array als dynamisch, und dann mit Hilfe der ReDim Anweisung erstellen wir ein Array mit drei Zeilen und zwei Spalten. Schließlich verwenden wir die ReDim Anweisung wieder mit der Erhalten Sie Stichwort um die obere Grenze des zweidimensionalen Feldes zu erhöhen.

Schritte:

  • Drücken Sie zu Beginn ALT+F11 zum Aufrufen der VBA-Modul Alternativ können Sie dies auch über das Fenster Entwickler Registerkarte → auswählen Visual Basic .
  • Dann, vom einfügen. Registerkarte → auswählen Modul Wir werden den VBA-Code hier eingeben.

  • Als nächstes geben Sie den folgenden Code in das Feld Modul Fenster.
 Sub Redim_Preserve_2D_Array_Row() Dim Unser_Array() As Variant ReDim Unser_Array(1 To 3, 1 To 2) Unser_Array(1, 1) = "Rachel" Unser_Array(2, 1) = "Ross" Unser_Array(3, 1) = "Joey" Unser_Array(1, 2) = 25 Unser_Array(2, 2) = 26 Unser_Array(3, 2) = 25 Range("C6:D8").Value = Unser_Array End Sub 

VBA-Code-Aufschlüsselung

  • Erstens rufen wir die Unterverfahren " Redim_Preserve_2D_Array_Row ".
  • Dann deklarieren wir die Variable Unser_Array als ein dynamisches Array.
  • Als Nächstes legen wir die Größe des Arrays fest. Die untere Grenze ist 3 ist die obere Grenze 2 und beide beginnen mit 1 .
  • Dann weisen wir dem Array Werte zu.
  • Danach geben wir die Werte in die C6:D8 Zellbereich.
  • Danach werden wir den Code ausführen.
  • Also, Speichern Sie die Modul und drücken Sie ausführen. .

  • Infolgedessen werden die Werte an die definierten Zellbereiche zurückgegeben. Wir sehen, dass " Rachel " steht in Zeile 1 und Spalte 1 Position, die wie folgt definiert wurde ( 1,1 ) im VBA-Code.

  • Jetzt werden wir die Größe des Arrays ändern.
  • Fügen Sie also Folgendes zum vorherigen Code hinzu und entfernen Sie den ersten Range.Value-Anweisung Wie der Code außerdem aussieht, können Sie dem Schnappschuss unten entnehmen.
 ReDim Unser_Array(1 To 3, 1 To 3) Unser_Array(1, 3) = "Texas" Unser_Array(2, 3) = "Mississippi" Unser_Array(3, 3) = "Utah" Range("C6:E8").Value = Unser_Array 

  • Hier haben wir die obere Grenze von ( 1 An 2 ) bis ( 1 An 3 ) durch 1 .
  • Dann haben wir die Werte zum Array hinzugefügt.
  • Wenn wir nun diesen Code ausführen, werden wir sehen, dass die vorherigen Werte nicht erhalten bleiben, sondern ein Leerzeichen für die vorherigen Werte zurückgegeben wird.

  • Wir können dies nun beheben, indem wir die Schlüsselwort bewahren in die ReDim-Anweisung .
  • Schließlich wird unser vollständiger Code so aussehen.
 Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Unser_Array() As Variant ReDim Unser_Array(1 Bis 3, 1 Bis 2) Unser_Array(1, 1) = "Rachel" Unser_Array(2, 1) = "Ross" Unser_Array(3, 1) = "Joey" Unser_Array(1, 2) = 25 Unser_Array(2, 2) = 26 Unser_Array(3, 2) = 25 ReDim Preserve Unser_Array(1 Bis 3, 1 Bis 3) Unser_Array(1, 3) = "Texas" Unser_Array(2, 3) = "Mississippi" Unser_Array(3, 3) = "Utah" Range("C6:E8").Value =Unser_Array End Sub 

  • Nun, wenn wir ausführen. diesen Code, dann sieht die Ausgabe so aus. Wir werden also " ReDim-Konserve " die letzte Dimension einer 2D-Array in Excel VBA. Die nächste Methode zeigt Ihnen, wie Sie " ReDim-Konserve " und ändern Sie die Größe beider Dimensionen des Arrays.

Lesen Sie mehr: VBA zum Abrufen eindeutiger Werte aus einer Spalte in einem Array in Excel (3 Kriterien)

Ähnliche Lektüre

  • Wie benennt man ein Tabellenarray in Excel (mit einfachen Schritten)
  • Excel VBA zum Einlesen einer CSV-Datei in ein Array (4 ideale Beispiele)
  • Wie man in Excel VBA einen Bereich in ein Array umwandelt (3 Möglichkeiten)
  • Excel VBA: Duplikate aus einem Array entfernen (2 Beispiele)

2. reDim beibehalten beide Dimensionen 2D-Array in Excel VBA

In dieser letzten Methode zeigen wir Ihnen die Schritte zur Größenänderung und " ReDim-Konserve " die 2D-Array Hier werden wir die VBA Transponieren Wenn wir versuchen würden, die Größe der unteren Grenze des Arrays mit der ersten Methode zu ändern, dann würden wir die " Subskription außerhalb des Bereichs "Lassen Sie uns nun sehen, wie wir das Problem lösen und unser Ziel erreichen können.

Schritte:

  • Erstens, wie in der ersten Methode gezeigt bringen Sie die Modul Fenster.
  • Zweitens fügen Sie die folgenden Codezeilen in den ersten Code ein.
 Unser_Array = Application.Transpose(Unser_Array) ReDim Preserve Unser_Array(1 To 3, 1 To 4) Unser_Array = Application.Transpose(Unser_Array) Unser_Array(4, 1) = "Monica" Unser_Array(4, 2) = 26 Unser_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Unser_Array 
  • Außerdem sieht der Code für die letzte Methode wie folgt aus.
 Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array =Application.Transpose(Unser_Array) ReDim Preserve Unser_Array(1 To 3, 1 To 4) Unser_Array = Application.Transpose(Unser_Array) Unser_Array(4, 1) = "Monica" Unser_Array(4, 2) = 26 Unser_Array(4, 3) = "New Mexico" Range("C6:E9").Value = Unser_Array End Sub 

VBA-Code-Aufschlüsselung

  • Erstens rufen wir die Unterverfahren " ReDim_Preserve_2D_Array_Both_Dimensions ".
  • Dann wird der Rest der Codes bis zum VBA Transponieren Funktion sind die gleichen wie im ersten Code.
  • Hier transponieren wir das Array.
  • Dann erhöhen wir die obere Grenze des Feldes.
  • Danach transponieren wir das Array erneut, was letztendlich die untere Grenze verändert.
  • Als Nächstes geben wir die Werte für das in der Größe veränderte Array ein, wobei die alten Daten erhalten bleiben.
  • Zum Schluss schreiben wir die Werte in den Zellbereich C6:E9 .
  • Und dann, wie in der ersten Methode gezeigt , ausführen. diesen Code.
  • Auf diese Weise können wir veranschaulichen, wie der Code eine 2D-Array unter Verwendung der " ReDim-Konserve " und die VBA Transponieren Funktion.

Lesen Sie mehr: VBA zum Transponieren eines Arrays in Excel (3 Methoden)

Dinge zum Merken

  • ReDim-Konserve kann die untere Grenze des Arrays nicht ändern. Dazu müssen wir die Transponieren Funktion.
  • Wir können nur verwenden ReDim bei dynamischen Arrays.

Schlussfolgerung

Wir haben Ihnen zwei schnelle Wege gezeigt, um " ReDim-Konserve " a 2D Array in Excel VBA. Wenn Sie Probleme mit diesen Methoden haben oder mir ein Feedback geben möchten, können Sie unten einen Kommentar abgeben. Außerdem können Sie unsere Website besuchen ExcelWIKI für weitere Excel-bezogene Artikel. Vielen Dank für die Lektüre und weiterhin viel Erfolg!

Hugh West ist ein äußerst erfahrener Excel-Trainer und -Analyst mit über 10 Jahren Erfahrung in der Branche. Er verfügt über einen Bachelor-Abschluss in Rechnungswesen und Finanzen sowie einen Master-Abschluss in Betriebswirtschaft. Hugh hat eine Leidenschaft für das Unterrichten und hat einen einzigartigen Lehransatz entwickelt, der leicht zu befolgen und zu verstehen ist. Seine Expertenkenntnisse in Excel haben Tausenden von Studenten und Berufstätigen auf der ganzen Welt geholfen, ihre Fähigkeiten zu verbessern und in ihrer Karriere herausragende Leistungen zu erbringen. Über seinen Blog teilt Hugh sein Wissen mit der Welt und bietet kostenlose Excel-Tutorials und Online-Schulungen an, um Einzelpersonen und Unternehmen dabei zu helfen, ihr volles Potenzial auszuschöpfen.