Dynamisches VBA-Array (Redim & Redim Preserve)

In diesem Tutorial wird gezeigt, wie Sie dynamische Arrays (redim und redim beibehalten) in VBA verwenden.

Dynamisches Array

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

Um ein dynamisches Array zu deklarieren, deklarieren Sie das Array, lassen aber die Array-Größe weg:

1 Dim strNames() As String

Bevor Sie Ihrem Array Werte zuweisen können, müssen Sie das Array mithilfe der ReDim-Anweisung auf die gewünschte Größe einstellen:

1 ReDim-StrNames(1 bis 3)

Wenn Sie jetzt Ihre Array-Größe ändern möchten, verwenden Sie einfach ReDim (oder ReDim Preserve, wie wir weiter unten erfahren werden).

Dynamische Varianten-Arrays

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

12345678 Unter TestArray()'die Variable deklarierenDim varNames() als Variante'das Array auffüllenvarNames() = Array("Fred", "Wilma", "Barney", "Betty")'Werte zurückgebenMsgBox Join(varNames, ",")End Sub

Redim vs. Redim Preserve

Die ReDim Anweisung ändert die Größe eines Arrays, Clearing alle vorhandenen Werte.

Die ReDim Preserve Anweisung ändert die Größe eines Arrays, halten („erhalten“) aller vorhandenen Werte.

Verwenden von ReDim

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

123456789101112 UntertestReDim()'das String-Array deklarierenDim strNames() As String'Größe des String-Arrays ändern, um 3 Werte aufnehmen zu könnenReDim-StrNames(1 bis 3)'das Array mit 3 Namen füllenstrNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'Ergebnis im Direktfenster anzeigenDebug.Print Join(strNames, vbCrLf)End Sub

Verwenden von ReDim Preserve

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

1234567891011121314151617 UntertestReDim()'das String-Array deklarierenDim strNames() As String'Größe des String-Arrays ändern, um 3 Werte aufnehmen zu könnenReDim-StrNames(1 bis 3)'das Array auffüllenstrNames(1) = "Mel"strNames(2) = "Steve"strNames(3) = "Bob"'Ergebnis im Direktfenster anzeigenDebug.Print Join(strNames, vbCrLf)'redim, aber speichere die DatenReDim Preserve strNames(1 bis 4)strNames(4) = "Fred"'Ergebnis im Direktfenster anzeigenDebug.Print Join(strNames, vbCrLf)End Sub

Wenn Sie das nicht verwenden BEWAHREN -Anweisung würden Sie die Daten verlieren, die sich zuvor im Array befanden.

Im unmittelbar darüber liegenden Fenster füllte das Array Mel, Steve und Bob. Bei der erneuten Deklaration wurden diese Werte entfernt und stattdessen 3 leere Werte und dann der Wert "Fred" zurückgegeben. Dies liegt an der BEWAHREN Aussage weggelassen wird.

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

wave wave wave wave wave