In VBA (Visual Basic for Applications) wird die `ReDim`-Anweisung verwendet, um die Größe eines bereits deklarierten Arrays zu ändern. Dies ist besonders nützlich, wenn die Anzahl der Elemente in einem Array dynamisch zur Laufzeit bestimmt wird. Im Folgenden finden Sie eine grundlegende Erklärung zur Verwendung von `ReDim` und einige wichtige Punkte, die Sie beachten sollten:
Grundsyntax
ReDim ArrayName(LowerBound To UpperBound)
- ArrayName: Der Name des Arrays, dessen Größe Sie ändern möchten.
- LowerBound: Der optionale untere Grenzwert, der das erste Element des Arrays definiert.
- UpperBound: Der obere Grenzwert, der das letzte Element des Arrays definiert.
Beispiel
Sub BeispielReDim()
Dim Zahlen() As Integer
Dim i As Integer
' Initialisieren des Arrays mit 5 Elementen
ReDim Zahlen(1 To 5)
' Füllen des Arrays mit Werten
For i = 1 To 5
Zahlen(i) = i * 10
Next i
' Ausgabe der ursprünglichen Array-Werte
For i = 1 To 5
Debug.Print Zahlen(i)
Next i
' Ändern der Array-Größe auf 10 Elemente
ReDim Zahlen(1 To 10)
' Neuer Inhalt für das Array
For i = 6 To 10
Zahlen(i) = i * 20
Next i
' Ausgabe der neuen Array-Werte
For i = 1 To 10
Debug.Print Zahlen(i)
Next i
End Sub
Verwendung von `ReDim Preserve`
Wenn Sie die `ReDim`-Anweisung verwenden, wird der vorhandene Inhalt des Arrays normalerweise gelöscht. Wenn Sie die vorhandenen Daten beibehalten und das Array dennoch neu dimensionieren möchten, können Sie das Schlüsselwort `Preserve` verwenden. Beachten Sie jedoch, dass Sie mit `Preserve` nur die letzte Dimension eines mehrdimensionalen Arrays ändern können.
ReDim Preserve ArrayName(LowerBound To UpperBound)
Beispiel mit `Preserve`
Sub BeispielReDimPreserve()
Dim Zahlen() As Integer
' Initialisieren des Arrays mit 3 Elementen
ReDim Zahlen(1 To 3)
Zahlen(1) = 10
Zahlen(2) = 20
Zahlen(3) = 30
' Ändern der Array-Größe auf 5 Elemente mit Preserve
ReDim Preserve Zahlen(1 To 5)
' Beibehaltene und neue Werte ausgeben
Debug.Print Zahlen(1) ' Ausgabe: 10
Debug.Print Zahlen(2) ' Ausgabe: 20
Debug.Print Zahlen(3) ' Ausgabe: 30
Debug.Print Zahlen(4) ' Ausgabe: 0 (neues Element)
Debug.Print Zahlen(5) ' Ausgabe: 0 (neues Element)
End Sub
Wichtige Hinweise
- Wenn Sie `Preserve` verwenden, können Sie nur die letzte Dimension eines Arrays ändern. In einem mehrdimensionalen Array können Sie die anderen Dimensionen nicht ändern.
- Die Verwendung von `ReDim` mit großen Arrays kann sich auf die Leistung auswirken, da das Array im Speicher neu zugewiesen wird.
Mit diesen Informationen sollten Sie in der Lage sein, `ReDim` effektiv in Ihren VBA-Projekten zu nutzen.