Ich habe ein Template, mit dem ich ähnliche Auswertungen erstelle.
In diesem Template wird bei der Aktivierung der Datei ein Menu erstellt (und beim Deaktivieren wieder gelöscht) mit welchem ich den Code "Anpassen" aufrufe. Damit werden verschiedenste Bereiche definiert und Berechnungen vorgenommen.
Nun kommt es vor, dass ich ab und zu mehrere Tabellen gleichzeitig öffne und den entsprechenden Befehl ausführen will. Ich erhalte dann eine Fehlermeldung (Anwendungs- und objektdefinierte Fehler), die darauf schliessen lässt, dass der Befehl in einer im Moment nicht aktiven Datei ausgeführt wird - und zu einem Fehler führt.
Wie stelle ich sicher, dass beim Aufrufen des Menus auch der Code, der zur aktiven Tabelle gehört, ausgeführt wird?
Danke für eine Rückmeldung.
Peter
Private Sub workbook_activate()
Menü_Erstellen
End Sub
Private Sub Workbook_Deactivate()
Application.StatusBar = ""
Menü_Löschen
End Sub
Const MenueName = "&Bericht"
Const Befehl1 = "&1 - einfügen / erneuern"
Sub Menü_Erstellen()
Dim MB As Object, MeinMenü As Object, Befehl As Object
Call Menü_Löschen
Set MB = CommandBars.ActiveMenuBar
Set MeinMenü = MB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
MeinMenü.Caption = MenueName
Set Befehl = MeinMenü.Controls.Add(Type:=msoControlButton, ID:=1)
With Befehl
.Caption = Befehl1
.OnAction = "Machwas1"
End With
End Sub
Sub Menü_Löschen()
On Error Resume Next
CommandBars.ActiveMenuBar.Controls(MenueName).Delete
End Sub
Sub Machwas1()
Anpassen
End Sub