3k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (926 Punkte)
Hallo allerseits,
über WorkBook Open wird folgendes Makro aufgerufen, beim öffen einer Datei erscheint dann die Meldung "Laufzeitfehler 91......", nach klick auf debuggen, ist die unterstrichene Zeile gelb. Nach klick auf "fortsetzen" im Menue "Ausführen" wird dieses Makro aber korrekt zu Ende ausgeführt. Was muss ich ändern um die Fehlermeldung loszuwerden?

Sub Wex_Menue() ' mit Unter-Untermenü
On Error Resume Next
Application.CommandBars.ActiveMenuBar.Controls("Wex Makros").Delete
With Application.CommandBars.ActiveMenuBar.Controls.Add(Type:=msoControlPopup)
.BeginGroup = False
On Error GoTo 0
.Caption = "&Wex Makros"
If ActiveSheet.ProtectContents = True Then
With .Controls.Add
.Caption = "Blattschutz aus"
.OnAction = "Blattschutz_aus"
End With
ElseIf ActiveSheet.ProtectContents = False Then
With .Controls.Add
.FaceId = 794
.Caption = "Blattschutz ein"
.OnAction = "Blattschutz_ein"
End With
End If

vielen Dank im Voraus
mfg
Wolfgang

8 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

welche Excelversion nutzt du?

Der Fehler könnte dann beim ELSEIF liegen.

Gruß

Helmut
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Helmut,

das ist Office / Excel 2003.

mfg
Wolfgang
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Wolfgang,

auf den ersten Blick fehlt am Codeende ein End With und ein End Sub.

Nach Hinzufügen der beiden Zeilen läuft bei mir der Code, auch bei Verzicht auf On Error Resume Next.

Allerdings kann ich nicht einschätzen, ob der Code auch seine gewollte Arbeit verrichtet, da ich nur in einer leeren Mappe testen konnte.

Gruß
Rainer
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Rainer,

o.g. ist der Anfang des Makros, danach folgen noch weitere Punkte, die in das neue Menue "Wex Makro" eingefügt werden.
Und wie gesagt: Es läuft automatisch bis zur untrstrichenen Zeile und kann auf o.g. Weg "problemlos" beendet werden. Einen "gravierenden" Fehler kann es also nicht beinhalten. Der Text zum Fehler lautet:
"Objektvariable oder With-Blockvariable nicht festgelegt"

mfg
Wolfgang
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo,
das Makro ist Teil eines AddIn´s.
Eben getestet: der Fehler tritt nur auf, wenn das Makro automatisch gestartet wird. Wenn ich die automatische Ausführung abbreche und es dann über "Sub/Userform ausführen" im Menue "Ausführen" starte, kommt keine Fehlermeldung.
mfg
Wolfgang
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo,
ich denke, ich weis jetzt was den Fehler verursacht:
Dieses Makro:
Private Sub Workbook_Open()
Menues_einfügen
End Sub

ruft dieses Makro auf, das wiederum 3 Makros zum einfügen eigener Menues aufruft:
Sub Menues_einfügen()
ExSimba
Makros_2
Wex_Menue
End Sub

Zu diesem Zeitpunkt gibt es aber noch kein "ActiveSheet", daher der Laufzeitfehler hier, aber kein Laufzeitfehler wenn die Datei schon offen ist.
Wie lässt sich nun die Fehlermeldung vermeiden?

mfg

Wolfgang
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

mit einer on Error Anweisung

msdn.microsoft.com/de-de/library/5hsw66as(v=vs.80).aspx

dort ist es beschrieben

Gruß

Helmut
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Helmut,
damit fange ich die Fehlermeldung ab. Aber es wird dann immer die nächste Anweisung ausgeführt. Im Menue steht dann immer nur "Blattschutz aus", auch wenn er aus ist.
Ich habe die Prüfung gelöscht und immer beide Einträge im Menue.
mfg
Wolfgang
...