Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1544to1548
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spezialmenu löschen

Spezialmenu löschen
27.02.2017 15:59:12
Peter
Guten Tag
Wenn ich eine bestimmte Arbeitsmappe öffne oder aktiviere, erstelle ich ein Spezialmenu:
''DieseArbeitsmappe
Private Sub workbook_activate()
Call Menu_Erstellen
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Menu_Löschen
End Sub

Private Sub Workbook_Deactivate()
Call Menu_Löschen
End Sub
'Modul
Const MenuName = "&X-Tool"
Public Sub Menu_Erstellen()
Dim MB As Object, MeinMenu As Object, Befehl As Object
Set MB = CommandBars.ActiveMenuBar
Set MeinMenu = MB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
MeinMenu.Caption = MenuName
End Sub

Public Sub Menu_Löschen()
On Error Resume Next
CommandBars.ActiveMenuBar.Controls(MenuName).Delete
End Sub
Nun wird bei jedem erneuten Anwählen ein zusätzliches Menü "X-Tool" erstellt - oder mit anderen Worten: Beim Deakltivieren des Workbooks wird das Menü "X-Tool" nicht gelöscht.
Weshalb wir das Spezial-Menü beim Deaktivieren der Datei nicht gelöscht? Ist die Datei schon "weg" wenn der Code "Menu_Löschen" ausgeführt werden sollte - und wenn ja, wie muss ich den Code ergänzen, dass es trotzdem klappt?
Danke und Gruss, Peter

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spezialmenu löschen
27.02.2017 16:19:50
Luschi
Hallo Peter,
1. deaktivieren von: On Error Resume Next
2. Haltepunkt (Breakpoint) mit F9-Taste setzen vor
   CommandBars.ActiveMenuBar.Controls(MenuName).Delete
3. Überprüfen, ob die Variable 'MenuName' einen gültigen/richtigen Inhalt hat
   Debug.Print Chr(34) & MenuName & Chr(34)
Da sieht man dann, ob es Leerzeichen iVariablen-Inhalt gibt!
Gruß von Luschi
aus klein-Paris
AW: Spezialmenu löschen
27.02.2017 17:19:34
Peter
Hallo Luschi
Vielen Dank.
Nun ist es tatsächlich so, dass bei
CommandBars.ActiveMenuBar.Controls(MenuName).Delete
die Fehlermeldung "Ungültiger Prozeduraufruf oder ungültiges Argument" kommt.
Das Argument "MenuName" stimmt
?MenuName
&X-Tool
Dann muss es ein ungültiger Prozeduraufruf sein?
Gruss, Peter
Anzeige
AW: Spezialmenu löschen
27.02.2017 17:36:53
Luschi
Hallo Peter,
die Variable 'MenuName' darf nur den Inhalt 'X-Tool' haben und nicht '&X-Tool'. Das '&' wird ja so ausgewertet, daß das 'X' unterstrichen wird und mit Alt+X angewählt werden kann.
So sollte es dann klappen:
CommandBars.ActiveMenuBar.Controls(Mid(MenuName, 2)).Delete
Gruß von Luschi
aus klein-Paris
AW: Spezialmenu löschen
27.02.2017 17:42:04
Mullit
Hallo,
CommandBarControls kannst Du nur über den Index ansprechen...
Gruß, Mullit
AW: Spezialmenu löschen
27.02.2017 21:20:47
Peter
Hallo Mullit
Danke für den Hinweis. Nur müsstest du mir noch auf die Sprünge helfen, wie ich das konkret umsetzen kann.
Gruss, Peter
AW: Spezialmenu löschen
27.02.2017 21:46:53
Mullit
Hallo,
der einfachste Weg wäre zunächst, daß Du direkt über Deine Objektvariable darauf zugreifst:
Option Explicit
'Modul
Private Const MenuName As String = "&X-Tool"
Private MeinMenu As CommandBarPopup
Public Sub Menu_Erstellen()
Dim MB As CommandBar
Set MB = CommandBars.ActiveMenuBar
Set MeinMenu = MB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
MeinMenu.Caption = MenuName
End Sub
Public Sub Menu_Löschen()
Call MeinMenu.Delete
Set MeinMenu = Nothing
End Sub

Eine andere Möglichkeit wäre, wenn Du mehrere Controls hast, Du loopst durch Deine Controls und fragst auf die Caption ab...
Gruß, Mullit
Anzeige
AW: Spezialmenu löschen
28.02.2017 21:28:24
Peter
Hallo Mullit
Danke. Das hat noch nicht auf Anhieb bei mir geklappt. Ich muss wohl ein ruhiges Wochenende abwarten und mir etwas mehr Zeit nehmen ...
Gruss, Peter
AW: Spezialmenu löschen
27.02.2017 21:01:12
Peter
Hallo Luschi
Danke.
Der Fehler bleibt mit dieesr Erweiterung, obschon das "&" jetzt weg ist.
Mal schauen, ob ich mit der Hilfe von Mullit schaffe.
Gruss, Peter
AW: Spezialmenu löschen
27.02.2017 21:34:13
Peter
Hallo Luschi
Ich bin's nochmals. Nun habe ich eine interessante Entdeckung gemacht. Ich bin in meiner Datei, die x-mal das gleiche Menu aufweist. Nun verlasse ich die Datei nicht, sondern wähle mehrmals mein Menü_Löschen an. Und siehe da: Keine Fehlermeldung bei jedem Anwählen verschwindet ein Menu, bis alle ganz weg sind. Das würde darauf hindeuten, dass der Code so läuft, dass aber das Problem ist, dass ich die Datei deaktiviere?
Public Sub Menu_Löschen()
On Error Resume Next
''CommandBars.ActiveMenuBar.Controls(MenuName).Delete
CommandBars.ActiveMenuBar.Controls(Mid(MenuName, 2)).Delete
End Sub
Ich habe den Code Menü-Erstellen und Menü-Löschen mal in einer sonst leeren Datei nachgebaut:
https://www.herber.de/bbs/user/111813.xlsm
Gruss, Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige