Ich habe verschiedene Arbeitsmappen mit nachfolgendem Code (in "DieseArbeitsmappe" resp. in einem Modul) für die Erstellung eines benutzerdefinierten Menues.
Wenn nur eine Mappe gleichzeitig offen ist, funktionieren die Befehle tadellos. Wenn ich jedoch eine zweite Datei öffne und dann die eine oder andere Position des selbst definierten Menues anwähle, wird der Code in der anderen Datei - welche den selben Code hat, ausgeführt.
Ich bin davon ausgegangen, dass dies dadurch verhindert wird, dass beim verlassen der Arbeitspappe das entsprechende Menue gelöscht wird und dann aufgrund der Aktivierung der neuen Datei ein neues (halt gleiches) Menue wieder erstellt wird.
Was muss ich zusätzlich machen, dass beim Anwählen eines Makros nicht dasjenige aus der anderen Datei ausgeführt wird?
Danke für eine Antwort.
Gruss, Peter
------------------------------------------------
CODE in DieseArbeitsmappe"
------------------------------------------------
Option Explicit
Private Sub Workbook_Activate()
Menue_Erstellen
End Sub
Private Sub Workbook_Deactivate()
Menue_Loeschen
End Sub
--------------------------------------------------
CODE in Modul
--------------------------------------------------
Option Explicit
Const MenueName = "&Datenaufbereitung"
Const Befehl1 = "&01. Import"
Const Befehl2 = "&02. Check"
Sub Menue_Erstellen()
Dim MB As Object, MeinMenue As Object, Befehl As Object
Call Menue_Loeschen
Set MB = CommandBars.ActiveMenuBar
Set MeinMenue = MB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
MeinMenue.Caption = MenueName
Set Befehl = MeinMenue.Controls.Add(Type:=msoControlButton, ID:=1)
With Befehl
.Caption = Befehl1
.OnAction = "Machwas1"
End With
Set Befehl = MeinMenue.Controls.Add(Type:=msoControlButton, ID:=1)
With Befehl
.Caption = Befehl2
.OnAction = "Machwas2"
End With
End Sub
Sub Menue_Loeschen()
On Error Resume Next
CommandBars.ActiveMenuBar.Controls(MenueName).Delete
Err.Number = 0
End Sub
Sub Machwas1()
Call DatenEintragen
End Sub
Sub Machwas2()
Call Kontrollrechnung
End Sub