VBA Mehrdimensionale Arrays (2D-Arrays)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on August 13, 2022

In diesem Tutorial werden 2D- 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.

Deklarieren eines 2D-Arrays

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

Dim intArr(2,3) as Integer

Auffüllen eines 2D-Arrays

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

Sub Auffuellen2D()
'Das 2D-Array deklarieren
   Dim intA(2, 3) As Integer
'Variablen deklarieren
   Dim zeile As Integer
   Dim spalte As Integer
'das Array auffüllen
   intA(0, 0) = 45
   intA(0, 1) = 50
   intA(0, 2) = 55
   intA(0, 3) = 60
   intA(1, 0) = 65
   intA(1, 1) = 70
   intA(1, 2) = 75
   intA(1, 3) = 80
   intA(2, 0) = 85
   intA(2, 1) = 90
   intA(2, 2) = 95
   intA(2, 3) = 100
'Das Array durchlaufen und Excel auffüllen
   For zeile = 0 To 2
      For spalte = 0 To 3
         Cells(zeile + 1, spalte + 1).Value = intA(zeile, spalte)
      Next spalte
    Next zeile
End Sub

Ihr Excel-Arbeitsblatt sollte dann wie folgt ausgefüllt sein.

zellenbereich aus 2D array auffuellen

 

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

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

Sub Auffuellen2D()
'Die Arbeitsblätter deklarieren
   Dim ws_Quelle As Worksheet
   Dim ws_Ziel As Worksheet
'Das Array deklarieren
   Dim wsDaten(10, 2) As Variant
'Die Variablen deklarieren
   Dim zeile as Integer
   Dim spalte As Integer
'auf das Quellblatt verweisen
Set ws_Quelle = Worksheets("Tabelle1")
'die Informationen aus dem Quellblatt abrufen und das Array auffüllen
   For zeile = LBound(wsDaten, 1) To UBound(wsDaten, 1)
      For spalte = LBound(wsDaten, 2) To UBound(wsDaten, 2)
         wsDaten(zeile, spalte) = ws_Quelle.Range("A2").Offset(zeile, spalte).Value
      Next spalte
   Next zeile
'Auf das Zielblatt verweisen
   Set ws_Ziel = Worksheets("Tabelle2")
' das Zielblatt aus dem Array auffüllen
   For zeile = LBound(wsDaten, 1) To UBound(wsDaten, 1)
      For spalte = LBound(wsDaten, 2) To UBound(wsDaten, 2)
         ws_Ziel.Range("A1").Offset(zeile,spalte).Value = wsDaten(zeile, spalte)
      Next spalte
   Next zeile
End Sub

Die Größe mit ReDim und Re-Dim Preserve ändern

Sie können die Größe eines Arrays mit ReDim ändern (weitere Informationen).

Sub GroesseAendern2D()
'Das Array deklarieren
   Dim varArray() as Variant
'Die Größe des Arrays deklarieren
   ReDim varArray(1, 2)
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
   varArray(0, 2) = "Jane Eyre"
   varArray(1, 0) = "Buchhalter"
   varArray(1, 1) = "Sekretärin"
   varArray(1, 2) = "Arzt"
'Die Größe des Arrays neu deklarieren
   ReDim varArray(0, 1)
'Das Array neu befüllen 
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
End Sub

Wenn Sie das Array neu deklarieren, verlieren Sie alle Daten, die zuvor im Array enthalten waren, es sei denn, Sie verwenden die Anweisung ReDim Preserve.

Sub GroesseAendern2D()
'das Array deklarieren 
   Dim varArray() as Variant
'Die Größe des Arrays deklarieren
   ReDim varArray(1, 2)
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
   varArray(0, 2) = "Jane Eyre"
   varArray(1, 0) = "Buchhalter"
   varArray(1, 1) = "Sekretärin"
   varArray(1, 2) = "Arzt"
'Die Größe des Arrays neu deklarieren
   ReDim Preserve varArray(1, 3)
 'Das Array mit zusätzlichen Werten auffüllen
   varArray(0, 3) = "Rob Barnes"
   varArray(1, 3) = "Klempner"
End Sub

Sie können nur die Größe der letzten Dimension eines Arrays ändern, wenn Sie die ursprünglichen Daten im Array mit Re-Dim Preserve beibehalten wollen. 2D array index ausser bereich

Wenn Sie auf Debuggen klicken, wird der Fehler hervorgehoben und zeigt an, dass die erste Dimension im Array nicht die gleiche wie die beim ursprünglichen Deklarieren der Arraygröße ist.

 

2D array index ausser bereich fehlerhafte zeile

vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples