Mehrdimensionales VBA-Array (2D-Arrays)

In diesem Tutorial werden 2-D- und mehrdimensionale Arrays in VBA behandelt.

Mehrdimensionales Array (2D-Arrays)

Mehrdimensionale Arrays sind Arrays, die mehr als eine Dimension enthalten, normalerweise zwei oder drei Dimensionen, aber Arrays können bis zu 32 Dimensionen haben.

Ein 2D-Array deklarieren

Um ein Array mit mehr als einer Dimension zu erstellen, verwenden Sie Kommas, um jede einzelne Dimension zu definieren:

1 Dim intArr(2,3) als Integer

Auffüllen eines 2D-Arrays

Der folgende Code füllt ein 2D-Array und füllt dann die Zeilen und Spalten eines Arbeitsblatts mit den Werten im Array.

1234567891011121314151617181920212223242526 Unter Populate2D()'deklarieren Sie das 2D-ArrayDim intA(2, 3) As Integer'Variablen deklarierenDim rw As IntegerDim col As Integer'das Array auffüllenintA(0, 0) = 45intA(0, 1) = 50intA(0, 2) = 55intA(0, 3) = 60intA(1, 0) = 65intA(1, 1) = 70intA(1, 2) = 75intA(1, 3) = 80intA(2, 0) = 85intA(2, 1) = 90intA(2, 2) = 95intA(2, 3) = 100'Schleife durch das Array und befülle ExcelFür rw = 0 bis 2Für Spalte = 0 bis 3Zellen(rw + 1, spalte + 1).Wert = intA(rw, spalte)Nächste FarbeNächste rwEnd Sub

Ihre Excel-Tabelle sollte dann wie folgt ausgefüllt werden.

Auffüllen eines 2D-Arrays aus Excel-Daten

Der folgende Code füllt ein 2D-Array aus einem Excel-Arbeitsblatt und füllt dann ein anderes Blatt mit den Daten.

1234567891011121314151617181920212223242526 Unter Populate2D()'Deklarieren Sie die ArbeitsblätterDim ws_Source als ArbeitsblattDim ws_Destination als Arbeitsblatt'Array deklarierenDim wsData(10, 2) als Variante'Deklarieren Sie die VariablenDim rw als IntegerDim col As Integer'beziehen Sie sich auf das QuellblattSet ws_Source = Worksheets("Sheet1")'holen Sie sich die Informationen aus dem Quellblatt und füllen Sie das ArrayFür rw = LBound(wsData, 1) Zu UBound(wsData, 1)Für Spalte = LBound(wsData, 2) Zu UBound(wsData, 2)wsData(rw, col) = ws_Source.Range("A2").Offset(rw, col).ValueNächste FarbeNächste rw'beziehen Sie sich auf das ZielblattSet ws_Destination = Worksheets("Sheet2")' fülle das Zielblatt aus dem Array ausFür rw = LBound(wsData, 1) Zu UBound(wsData, 1)Für Spalte = LBound(wsData, 2) Zu UBound(wsData, 2)ws_Destination.Range("A1").Offset(rw,col).Value = wsData(rw,col)Nächste FarbeNächste rwEnd Sub

Größenänderung mit ReDim und Re-Dim Preserve

Sie können die Größe eines Arrays ändern mit ReDim.

1234567891011121314151617 Sub Resize2D()'das Array deklarierenDim varArray() als Variante'Größe des Arrays angebenReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred-Schnalle"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Buchhalter"varArray(1, 1) = "Sekretär"varArray(1, 2) = "Arzt"'Größe des Arrays neu deklarierenReDim varArray(0, 1)'das Array neu auffüllenvarArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred-Schnalle"End Sub

Wenn Sie das Array erneut deklarieren, gehen alle zuvor im Array gespeicherten Daten verloren, es sei denn, Sie verwenden die ReDim Preserve-Erklärung.

12345678910111213141516 Sub Resize2D()'das Array Dim varArray() als Variant deklarieren'Größe des Arrays angebenReDim varArray(1, 2)varArray(0, 0) = "Mel Smith"varArray(0, 1) = "Fred-Schnalle"varArray(0, 2) = "Jane Eyre"varArray(1, 0) = "Buchhalter"varArray(1, 1) = "Sekretär"varArray(1, 2) = "Arzt"'Größe des Arrays neu deklarierenReDim Preverve varArray(1, 3)'das Array mit zusätzlichen Werten füllenvarArray(0, 3) = "Rob Barnes"varArray(1, 3) = "Klempner"End Sub

Sie können die Größe der letzten Dimension eines Arrays nur ändern, wenn Sie die Originaldaten im Array behalten möchten mit Re-Dim Preserve.

Wenn Sie auf Debug klicken, wird der Fehler hervorgehoben, der anzeigt, dass die erste Dimension im Array nicht mit der ersten Dimension bei der ursprünglichen Deklaration der Array-Größe übereinstimmt.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave