Rund um die Menüleisten (II) |
|
|||||||||||||||||||||
Prinzipiell unterscheidet sich die Menüleiste nicht von den Symbolleisten.
Jedoch ist sie nicht so flexibel und frei anpassbar wie die Symbolleisten; so kann z.B. keine weitere Menüleiste hinzugefügt werden. Sub MnuNeu() Dim msg, antw As String Set cbmnu = CommandBars("Menu Bar") Set ctlmnu = cbmnu.Controls.Add(Type:=msoControlPopup, ID:=1, Temporary:=True) With ctlmnu .Caption = "Neuer Eintrag" End With End Sub Um dem Eintrag einen Menüpunkt hinzuzufügen, setzt man am Besten zuerst einen Verweis auf den Menüeintrag (hier "Neuer Eintrag"). Und nur wenn der Rückgabewert nicht Nothing (Zeile 5) ist, wird der Menüpunkt hinzugefügt (Zeile 6). 1 Sub MnuEintragNeu() 2 Dim ctlumnu As CommandBarControl 3 Set cbmnu = CommandBars("Menu Bar") 4 Set ctlmnu = cbmnu.FindControl(Type:=msoControlPopup, ID:=1) 5 If Not ctlmnu Is Nothing Then 6 Set ctlumnu = ctlmnu.Controls.Add(Type:=msoControlButton, ID:=1, _ Temporary:=True) 7 With ctlumnu 8 .Caption = "1. Menüpunkt" 9 .FaceId = "463" 10 .OnAction = "MyMakro" 11 End With 12 End If 13 End Sub Wenn ein Untermenüeintrag (msoControlPopup) hinzugefügt werden soll, muss die Zeile 6 folgendermaßen geändert werden: Hinweis: Das Entfernen eines Menüpunktes kann auf verschiedene Wege erfolgen: Ist der Name des Menüeintrags und des Menüpunkts bekannt, kann er direkt angesprochen und gelöscht werden: Sub MnuEintragLöschen() On Error Resume Next Dim cbmnu As CommandBar Dim ctldelete As CommandBarControl Set cbmnu = CommandBars("Menu Bar") Set ctldelete = cbmnu.Controls("Neuer Eintrag").Controls("1. Menüpunkt") If Not ctldelete Is Nothing Then ctldelete.Delete End Sub Ist nur die Beschriftung bekannt, müssen alle Menüeinträge mit allen Menüpunkten durchlaufen und die Beschriftungen (.Caption-Eigenschaften) geprüft werden. |
www.chf-online.de/vba/menuleisten2.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |