Freigeben über


ReDim ungültig

Nicht jedes Array kann geändert werden. Für diesen Fehler gibt es folgende Ursachen und Lösungen:

  • Eine Variable war implizit als Variant deklariert, und Sie haben versucht, sie mit ReDim in ein Array zu ändern.

    Ein Variant-Objekt kann ein Array enthalten, aber wenn es nicht explizit deklariert ist, können Sie ReDim nicht verwenden, um es in ein Array zu verwandeln. Deklarieren Sie den Variant-Wert , bevor Sie ReDim verwenden, um die Anzahl der Elemente anzugeben, die er enthalten kann. Im folgenden Code verursacht z. B ReDim AVar(10) . einen ungültigen ReDim-Fehler , aber ReDim BVar(10) nicht:

AVar = 1    ' Implicit declaration of AVar. 
ReDim AVar(10)    ' Causes invalid ReDim error. 
'. 
'. 
'. 
Dim BVar    ' Explicit declaration of BVar. 
ReDim BVar(10)    ' No error. 
  • Sie haben versucht, reDim zu verwenden, um mehr als eine Dimension eines Arrays zu ändern, das in einem Variant-Objekt enthalten ist. Sie können ReDim nur verwenden, um die Größe der letzten Dimension eines Arrays in einem Variant-Objekt zu ändern. Um ein Array mit mehreren Dimensionen zu erstellen, die neu dimensioniert werden können, kann das Array nicht in einem Variant-Objekt enthalten sein, und Sie müssen es normal deklarieren.

  • Verwenden Sie ReDim nur, um die Anzahl der Elemente in einem normalen Array zu ändern, nicht den Typ dieser Elemente. Wenn Sie ein Array benötigen, in dem Sie die Typen der Elemente ändern können, verwenden Sie ein Array, das in einem Variant-Objekt enthalten ist. Wenn Sie das Array zuerst deklarieren, können die Typen und die Anzahl seiner Elemente wie folgt geändert werden:

Dim MyVar As Variant    ' Declare the variable. 
ReDim MyVar(10) As String    ' ReDim it as array of String subtypes. 
ReDim MyVar(20) As Integer    ' ReDim it as array of Integer subtypes. 
ReDim MyVar(5) As Variant    ' ReDim it as array of Variant subtypes. 

  • Sie haben versucht, ReDim mit einem Array zu verwenden, das ein Member eines Automatisierungsobjekts ist.

    Entfernen Sie ReDim.

    Hinweis Wenn Sie keinen Typ für eine Variable angeben, erhält die Variable den Standardtyp Variant. Dies ist nicht immer offensichtlich. Der folgende Code deklariert beispielsweise zwei Variablen: Die erste mit dem Namen MyVar ist vom Datentyp Variant, die zweite mit dem Namen AnotherVar ist vom Datentyp Integer.

Dim MyVar, AnotherVar As Integer 

Weitere Informationen erhalten Sie, indem Sie das fragliche Element auswählen und F1 (unter Windows) bzw. HILFE (unter Macintosh) drücken.

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.