Die Excel Wühlkiste

Menüs programmieren

Eine einfache Version, ohne Untermenüs

Eine Interesannte Möglichkeit ist es, eigene Menüs mit der Mappe zu öffnen. Da aber der hier vorgestellte Code das Menü nur erstellt, aber beim Schliessen der Mappe nicht wieder löscht, ist der Einsatz im Autostart-Ordner von Excel zu empfehlen.
Ordner: XLSTART und hier in der Datei personl.xls
(Gefunden in einem Excel Newsletter und auf meine Bedürfnisse angepasst):

Zur Erklärung:
cbCommand.Caption = "&Summe"   ist der Titeltext der Menue-Schaltfläche und der nachfolgende Buchstabe nach dem "&"-Zeichen bezeichnet den Shortcut.
cbCommand.OnAction = "Summe"   muss der Name eines real existierenden Makros sein.
Unbedingt zu beachten:
Der Code ist im VBA-Editor im Codefenster von "Diese Arbeitsmappe" einzugeben. Einfach komplett kopieren und per "Drag and Drop" dort einfügen.
Die folgenden Makros dürften weitestgehend selbsterklärend sein.

Private Sub Workbook_Open()
Dim cbMenu As CommandBar
Dim cbSpecialMenu As CommandBarPopup
Dim cbCommand As CommandBarControl

Set cbMenu = _
Application.CommandBars("Worksheet Menu Bar")
Set cbSpecialMenu = _
cbMenu.Controls.Add(Type:=msoControlPopup)
cbSpecialMenu.Caption = "Spezialmenue"

Set cbCommand = _
cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "&Summe"
cbCommand.OnAction = "Summe"

Set cbCommand = _
cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "&Bericht"
cbCommand.OnAction = "Bericht"

Set cbCommand = _
cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "&Linien"
cbCommand.OnAction = "Linien"

Set cbCommand = _
cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "L&inien löschen"
cbCommand.OnAction = "Linien_loeschen"

Set cbCommand = _
cbSpecialMenu.Controls.Add(Type:=msoControlButton)
cbCommand.Caption = "Bl&ock_erzeugen"
cbCommand.OnAction = "Block_erzeugen"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim cbSpecialMenu As CommandBarControl

On Error Resume Next
Set cbSpecialMenu = _
Application.CommandBars("Worksheet Menu " & _
"Bar").Controls("Spezialmenue")
cbSpecialMenu.Delete
End Sub
Private Sub Workbook_Deactivate()
On Error Resume Next
Application.CommandBars("Worksheet Menu " & _
"Bar").Controls("Spezialmenue").Visible = False
End Sub
Private Sub Workbook_Activate()
On Error Resume Next
Application.CommandBars("Worksheet Menu " & _
"Bar").Controls("Spezialmenue").Visible = True
End Sub
Die Excel Wühlkiste
Valid HTML 4.01 Strict
letzte Aktualisierung: 13.02.2009
Autor: Hubert Scheidgen / 04.02.2009
W3C CSS-Validierungsservice