VBA – Dynamisches Array (Redim & Redim Preserve)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on Dezember 8, 2022

In diesem Tutorial zeigen wir Ihnen, wie Sie dynamische Arrays (ReDim und ReDim Preserve) in VBA verwenden können.

Dynamisches Array

Dynamische Arrays sind Arrays, die ihre Größe ändern können (im Gegensatz zu statischen Arrays, die unveränderlich sind).

Um ein dynamisches Array zu deklarieren, lassen die Array-Größe bei der Deklaration weg:

Dim strNamen() As String

Bevor Sie dem Array dann Werte zuweisen können, müssen Sie es mit der ReDim-Anweisung auf die gewünschte Größe einstellen:

ReDim strNamen(1 To 3)

Wenn Sie nun die Größe Ihres Arrays ändern möchten, verwenden Sie einfach ReDim (oder ReDim Preserve, wie wir weiter unten erfahren werden).

Dynamische Variant-Arrays

Hinweis: Variant-Arrays sind ein wenig anders. Bei Variant-Arrays müssen Sie die Array-Größe nicht mit ReDim festlegen, bevor Sie Werte zuweisen.

Sub ArrayTesten()
'Die Variable deklarieren
    Dim varNamen() As Variant
'Das Array auffüllen
    varNamen() = Array("Fred", "Wilma", "Barney", "Betty")
'Die Werte zurückgeben
    MsgBox Join(varNamen, ",")
End Sub

Redim im Vergleich zu Redim Preserve

Die ReDim-Anweisung ändert die Größe eines Arrays und löscht alle vorhandenen Werte.

Die Anweisung ReDim Preserve ändert die Größe eines Arrays, wobei alle vorhandenen Werte beibehalten werden.

Verwendung von ReDim

In der Praxis sieht die Größenänderung eines Arrays mit ReDim wie folgt aus:

Sub ReDimTesten()
'Das String-Array deklarieren
   Dim strNamen() As String
'Die Größe des String-Arrays ändern, damit es 3 Werte aufnehmen kann
   ReDim strNamen(1 To 3)
'Das Array mit 3 Namen auffüllen
   strNamen(1) = "Mel"
   strNamen(2) = "Steve"
   strNamen(3) = "Bob"
'Das Ergebnis im Direktfenster anzeigen
   Debug.Print Join(strNamen, vbCrLf)
End Sub

vba redim verwenden

ReDim Preserve verwenden

In diesem Beispiel verwenden wir ReDim, um das anfängliche dynamische Array festzulegen, und dann ReDim Preserve, um die Größe des Arrays unter Beibehaltung der ursprünglichen Werte zu ändern:

Sub ReDimTesten()
'Das String-Array deklarieren
   Dim strNamen() As String
'Die Größe des String-Arrays ändern, damit es 3 Werte aufnehmen kann
   ReDim strNamen(1 To 3)
'Das Array auffüllen
   strNamen(1) = "Mel"
   strNamen(2) = "Steve"
   strNamen(3) = "Bob"
'Das Ergebnis im Direktfenster anzeigen
   Debug.Print Join(strNamen, vbCrLf)
'Redim, aber die Daten beibehalten
   ReDim Preserve strNameN(1 To 4)
   strNamen(4) = "Fred"
'Das Ergebnis im Direktfenster anzeigen
   Debug.Print Join(strNamen, vbCrLf)
End Sub

vba redim preserve verwenden

Wenn Sie die PRESERVE-Anweisung nicht verwenden, würden Sie die Daten, die sich zuvor in dem Array befanden, verlieren.

vba redim ohne preserve verwenden

Im obigen Direktfenster enthielt das Array die Werte Mel, Steve und Bob. Als es neu deklariert wurde, wurden diese Werte entfernt und stattdessen 3 leere Werte und der Wert „Fred“ zurückgegeben. Dies ist darauf zurückzuführen, dass die PRESERVE-Anweisung weggelassen wurde.

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