Freigeben über


Die Objektvariable oder die With-Blockvariable wurde nicht festgelegt.

Es wird auf eine ungültige Objektvariable verwiesen. Dieser Fehler kann mehrere Ursachen haben:

  • Eine Variable wurde ohne Angabe eines Typs deklariert. Wenn eine Variable deklariert wird, ohne einen Typ anzugeben, wird standardmäßig der Typ Object verwendet.

    Eine Variable, die mit Dim x deklariert wurde, wäre beispielsweise vom Typ Object;, eine Variable, die mit Dim x As String deklariert wurde, vom Typ String.

    Tipp

    Die Option Strict-Anweisung lässt die implizite Eingabe, die zu einem Object-Typ führt, nicht zu. Wenn Sie den Typ weglassen, tritt ein Kompilierzeitfehler auf. Informationen hierzu finden Sie unter Option Strict-Anweisung.

  • Sie versuchen, auf ein Objekt zu verweisen, das auf Nothingfestgelegt wurde.

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

    Beispielsweise löst ein Array, das als products() As String deklariert wurde, den Fehler aus, wenn Sie versuchen, auf ein Element des Arrays products(3) = "Widget"zu verweisen. Das Array verfügt über keine Elemente und wird als Objekt behandelt.

  • Sie versuchen, innerhalb eines With...End With-Blocks auf Code zuzugreifen, bevor der Block initialisiert wurde. Ein With...End With-Block muss initialisiert werden, indem der Anweisungseinstiegspunkt With ausgeführt wird.

Hinweis

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

So beheben Sie diesen Fehler

  1. Fügen Sie am Anfang der Datei folgenden Code hinzu, um Option Strict auf On festzulegen:

    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 Option Strictnicht aktivieren möchten, suchen Sie in Ihrem Code nach Variablen, die ohne Typ (Dim x anstelle von Dim x As String) angegeben wurden, und fügen Sie der Deklaration den gewünschten Typ hinzu.

  3. Stellen Sie sicher, dass Sie nicht auf eine Objektvariable verweisen, die auf Nothingfestgelegt wurde. Suchen Sie in Ihrem Code nach dem Schlüsselwort Nothing, und überarbeiten Sie den Code, damit das Objekt erst auf Nothing festgelegt wird, nachdem Sie darauf verwiesen haben.

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

  5. Stellen Sie sicher, dass Ihr With-Block initialisiert wird, indem Sie den Anweisungseinstiegspunkt With ausführen.

Siehe auch