Freigeben über


Objektvariable oder Blockvariable nicht festgelegt

Auf eine ungültige Objektvariable wird verwiesen. Dieser Fehler kann aus mehreren Gründen auftreten:

  • Eine Variable wurde ohne Angabe eines Typs deklariert. Wenn eine Variable ohne Angabe eines Typs deklariert wird, wird standardmäßig typisiert Object.

    Eine variable, die Dim x deklariert wurde, wäre z. B. vom Typ Object; einer variablen, die mit Dim x As String "type String" deklariert wurde.

    Tipp

    Die Option Strict Anweisung verbietet die implizite Eingabe, die zu einem Object Typ führt. Wenn Sie den Typ weglassen, tritt ein Kompilierungszeitfehler auf. Siehe Option Strict-Anweisung.

  • Sie versuchen, auf ein Objekt zu verweisen, auf das festgelegt Nothingwurde.

  • Sie versuchen, auf ein Element einer Arrayvariablen zuzugreifen, die nicht ordnungsgemäß deklariert wurde.

    Ein array, das deklariert wird, products() As String löst beispielsweise den Fehler aus, wenn Sie versuchen, auf ein Element des Arrays products(3) = "Widget"zu verweisen. Das Array hat keine Elemente und wird als Objekt behandelt.

  • Sie versuchen, auf Code in einem With...End With Block zuzugreifen, bevor der Block initialisiert wurde. Ein With...End With Block muss durch Ausführen des Einstiegspunkts der With Anweisung initialisiert werden.

Hinweis

In früheren Versionen von Visual Basic oder VBA wurde dieser Fehler auch durch Zuweisen eines Werts zu einer Variablen ausgelöst, ohne das Set Schlüsselwort (x = "name" anstelle von Set x = "name") zu verwenden. Das Set Schlüsselwort ist in Visual Basic .Net nicht mehr gültig.

So beheben Sie diesen Fehler

  1. Legen Sie diesen Option StrictOn Wert fest, indem Sie den folgenden Code am Anfang der Datei hinzufügen:

    Option Strict On
    

    Wenn Sie das Projekt ausführen, wird in der Fehlerliste für jede Variable, die ohne Typ angegeben wurde, ein Compilerfehler angezeigt.

  2. Wenn Sie den Code nicht aktivieren Option Strictmöchten, suchen Sie den Code nach Variablen, die ohne einen Typ (Dim x anstelle von Dim x As String) angegeben wurden, und fügen Sie der Deklaration den beabsichtigten Typ hinzu.

  3. Stellen Sie sicher, dass Sie nicht auf eine Objektvariable verweisen, die auf ".Nothing Durchsuchen Sie Ihren Code nach dem Schlüsselwort Nothing, und überarbeiten Sie den Code, sodass das Objekt erst festgelegt Nothing ist, nachdem Sie darauf verwiesen haben.

  4. Stellen Sie sicher, dass alle Arrayvariablen dimensioniert sind, bevor Sie darauf zugreifen. Sie können entweder eine Dimension zuweisen, wenn Sie das Array (Dim x(5) As String anstelle von Dim x() As String) erstellen, oder das Schlüsselwort verwenden ReDim , um die Dimensionen des Arrays festzulegen, bevor Sie zuerst darauf zugreifen.

  5. Stellen Sie sicher, dass der With Block initialisiert ist, indem Sie den Einstiegspunkt der With Anweisung ausführen.

Siehe auch