ReDim-Anweisung
Wird auf Prozedurebene zur Neuzuordnung von Speicherplatz für Variablen dynamischer Arrays verwendet.
Syntax
ReDim [ Preserve ] varname ( subscripts ) [ Astype ], [ varname ( subscripts ) [ Astype ]] . . .
Die Syntax der ReDim-Anweisung umfasst die folgenden Komponenten:
Komponente | Beschreibung |
---|---|
Preserve | Optional. Schlüsselwort zur Beibehaltung der Daten in einem bestehenden Array, wenn die Größe der letzten Dimension geändert wird. |
varname | Erforderlich. Name der Variablen; folgt standardmäßigen Konventionen für die Variablenbenennung. |
subscripts | Erforderlich. Dimensionen einer Array-Variablen; bis zu 60 Dimensionen können deklariert werden. Das Argument subscripts verwendet die folgende Syntax: [lowerTo] upper [ , [lowerTo] upper ] . . . . Wenn sie nicht explizit in lower angegeben ist, wird die Untergrenze eines Arrays durch die Option Base-Anweisung gesteuert. Die Untergrenze ist Null, wenn keine Option Base-Anweisung vorhanden ist. |
type | Optional.
Datentyp der Variablen; Kann Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (derzeit nicht unterstützt), Date, String (für Zeichenfolgen mit variabler Länge), Zeichenfolgenlänge (für Zeichenfolgen mit fester Länge), Object, Variant, ein benutzerdefinierter Typ oder ein Objekttyp sein. Verwenden Sie eine eigene Astype-Klausel für jede definierte Variable. Für eine Variant, die ein Array enthält, beschreibt type den Typ jedes Elements des Arrays, ändert die Variant-Variable aber nicht in einen anderen Typ. |
Hinweise
Mit der ReDim-Anweisung wird die Größe eines dynamischen Arrays festgelegt bzw. geändert, das bereits mit einer Private-, Public- oder Dim-Anweisung mit leeren Klammern (ohne Dimensions-Subscripts) formal deklariert wurde.
Verwenden Sie die ReDim-Anweisung wiederholt, um die Anzahl der Elemente und Dimensionen in einem Array zu ändern. Sie können jedoch kein Array eines Datentyps deklarieren und später ReDim verwenden, um das Array in einen anderen Datentyp zu ändern (es sei denn, das Array ist in einer Variant-Variablen enthalten). Wenn das Array in einer Variant-Variablen enthalten ist, kann der Typ der Elemente mit einer Astype-Klausel geändert werden, es sei denn, Sie verwenden das Preserve-Schlüsselwort. In diesem Fall sind keine Änderungen am Datentyp zulässig.
Wenn Sie das Preserve-Schlüsselwort verwenden, können Sie nur die Größe der letzten Array-Dimension ändern, aber nicht die Anzahl der Dimensionen. Wenn Ihr Array beispielsweise nur über eine Dimension verfügt, können Sie die Größe dieser Dimension ändern, da sie die letzte und einzige Dimension ist. Wenn Ihr Array jedoch zwei oder mehr Dimensionen hat, können Sie nur die Größe der letzten Dimension ändern und den Inhalt des Arrays dennoch beibehalten.
Das folgende Beispiel zeigt, wie Sie die letzte Dimension vergrößern können, ohne dabei bestehende Daten im Array zu löschen.
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
Ebenso können Sie bei Verwendung von Preserve die Größe des Arrays nur durch Ändern der oberen Grenze ändern. Eine Änderung der unteren Grenze erzeugt einen Fehler.
Wenn Sie ein Array kleiner machen, gehen Daten aus den entfernten Elementen verloren.
Beim Initialisieren der Variablen werden numerische Variablen als 0, Zeichenfolgen mit variabler Länge als Zeichenfolge der Länge null ("") und Zeichenfolgen mit fester Länge als mit Nullen angefüllte Zeichenfolge initialisiert. Variant -Variablen werden auf Empty initialisiert. Jedes Element einer Variablen von einem benutzerdefinierten Typ wird so initialisiert, als wäre es eine separate Variable.
Eine Variable, die ein Objekt referenziert, muss einem vorhandenen Objekt mit der Set-Anweisung zugewiesen werden, bevor sie verwendet werden kann. Bis dahin hat die deklarierte Objektvariable den speziellen Wert Nothing, der angibt, dass sie auf keine bestimmte Instanz eines Objekts verweist.
Die ReDim-Anweisung fungiert als deklarative Anweisung, wenn die deklarierte Variable nicht auf Modulebene oder Prozedurebene existiert. Wenn später eine andere Variable mit demselben Namen erstellt wird, bezieht sich ReDim selbst in einem breiteren Bereich auf die spätere Variable und verursacht nicht notwendigerweise einen Kompilierungsfehler, selbst wenn Option Explicit wirksam ist. Um derartige Konflikte zu vermeiden, sollte ReDim nicht als deklarierende Anweisung, sondern nur zur Neudimensionierung von Arrays verwendet werden.
Hinweis
Um die Größe eines in einem Variant-Objekt enthaltenen Arrays zu ändern, müssen Sie die Variant-Variable explizit deklarieren, bevor Sie versuchen, die Array-Größe zu ändern.
Beispiel
In diesem Beispiel wird mit der ReDim-Anweisung Speicherplatz für Variablen dynamischer Arrays zugeordnet bzw. neu zugeordnet. Dabei wird Option Base als 1 vorausgesetzt.
Dim MyArray() As Integer ' Declare dynamic array.
Redim MyArray(5) ' Allocate 5 elements.
For I = 1 To 5 ' Loop 5 times.
MyArray(I) = I ' Initialize array.
Next I
Die nächste Anweisung ändert die Größe des Arrays und löscht die Elemente.
Redim MyArray(10) ' Resize to 10 elements.
For I = 1 To 10 ' Loop 10 times.
MyArray(I) = I ' Initialize array.
Next I
Die folgende Anweisung ändert die Größe des Arrays, löscht jedoch keine Elemente.
Redim Preserve MyArray(15) ' Resize to 15 elements.
Siehe auch
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.