VBA-Fehler Objektvariable oder With-Blockvariable nicht festgelegt
In diesem Artikel wird der VBA-Fehler Objektvariable oder With-Blockvariable nicht festgelegt erklärt.
Dieser relativ häufige Fehler tritt genau aus dem Grund auf, den die Meldungsbox angibt. Die Objektvariable oder With-Blockvariable ist noch nicht festgelegt worden!
Objektvariable nicht festgelegt
Betrachten wir den folgenden Code:
Sub TestObjekt()
Dim wks as Worksheet
wks.Name = "Tabelle1"
End Sub
Wir haben eine neue Objektvariable namens „wks“ als Arbeitsblatt deklariert.
Dann versuchen wir, dieses Blatt „Tabelle1“ zu nennen.
Wenn wir den Code ausführen, erhalten wir jedoch den Laufzeitfehler. Wenn wir auf die Schaltfläche Debuggen klicken, bleibt der Code in der Zeile stehen, in der wir versuchen, das Blatt zu benennen.
Wir versuchen, die Variable „wks“ zu belegen, aber wir haben die Variable nicht einem bestimmten Blatt zugewiesen, sondern sie nur als Variable deklariert. Obwohl die Variable deklariert ist, existiert das Objekt also nicht wirklich!
Betrachten wir den geänderten Code unten:
Sub TestObject()
Dim wks as Worksheet
Set wks = ActiveSheet
wks.Name = "Tabelle1"
End Sub
Mit dieser Codezeile haben wir nun das Objekt erstellt.
Set wks = ActiveSheet
Der Code wird dann ohne Fehler ausgeführt.
With-Blockvariable nicht festgelegt
Betrachten wir nun diesen Code:
Sub TestWith()
Dim wks As Worksheet
With wks
.Name = "Tabelle1"
.Activate
End With
End Sub
Wenn wir diesen Code ausführen, erhalten wir denselben Fehler
Wenn wir auf Debuggen klicken, bleibt der Code innerhalb des WITH….END WITH-Blocks stehen. Daher kommt der Fehler mit der Blockvariablen.
Der Fehler ist eigentlich derselbe und auch hier lösen wir ihn, indem wir das Objekt erstellen.
Sub TestWith()
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
.Name = "Tabelle1"
.Activate
End With
End Sub