Kontextmenü mit Untermenü

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Kontextmenü mit Untermenü
von: Alexander
Geschrieben am: 02.06.2015 21:39:04

Hallo liebe Profis,
ich habe zwei Fragen zur Erstellung von Kontextmenüs.
1. Kann ich iregendwie eine FaceId zum Obermenü erstelllen?
2. Warum wird immer nur der letzte im Code aufgeführte Untermenüpnkt angezeigt?
Hier der Code:

Public Sub SetCommandbar()
    Dim objCmdBar As CommandBar
    Dim objCPopup As CommandBarPopup
    Dim objButton As CommandBarButton
    Set objCmdBar = Application.CommandBars("Cell")
    Set objCPopup = objCmdBar.Controls.Add(msoControlPopup, Temporary:=True)
    Set objButton = objCPopup.Controls.Add(msoControlButton, Temporary:=True)
    With objCPopup
        .Caption = "Menü"
        .BeginGroup = True
        '.FaceID = 59 
        With objButton
            .Caption = "UnterMenü1"
            .FaceId = 59
            .OnAction = "MeinMakro"
        End With
        With objButton
            .Caption = "UnterMenü2"
            .FaceId = 59
            .OnAction = "MeinMakro"
        End With
        With objButton
            .Caption = "UnterMenü3"
            .FaceId = 59
            .OnAction = "MeinMakro"
        End With
    End With
End Sub
Public Sub MeinMakro()
    MsgBox "Hallo"
End Sub
Gruß
Alex

Bild

Betrifft: AW: Kontextmenü mit Untermenü
von: Uduuh
Geschrieben am: 02.06.2015 21:58:08
Hallo,
1.: PopUps unterstützen keine FaceID
2. Warum wird immer nur der letzte im Code aufgeführte Untermenüpnkt angezeigt?
weil du nur einen Button erstellst.

Public Sub SetCommandbar()
    Dim objCmdBar As CommandBar
    Dim objCPopup As CommandBarPopup
    Dim objButton As CommandBarButton
    Set objCmdBar = Application.CommandBars("Cell")
    Set objCPopup = objCmdBar.Controls.Add(msoControlPopup, Temporary:=True)
    With objCPopup
        .Caption = "Menü"
        .BeginGroup = True
        '.FaceID = 59
    Set objButton = objCPopup.Controls.Add(msoControlButton, Temporary:=True)
        With objButton
            .Caption = "UnterMenü1"
            .FaceId = 59
            .OnAction = "MeinMakro"
        End With
    Set objButton = objCPopup.Controls.Add(msoControlButton, Temporary:=True)
        With objButton
            .Caption = "UnterMenü2"
            .FaceId = 59
            .OnAction = "MeinMakro"
        End With
    Set objButton = objCPopup.Controls.Add(msoControlButton, Temporary:=True)
        With objButton
            .Caption = "UnterMenü3"
            .FaceId = 59
            .OnAction = "MeinMakro"
        End With
    End With
End Sub
Gruß aus’m Pott
Udo


Bild

Betrifft: AW: Kontextmenü mit Untermenü
von: Alexander
Geschrieben am: 02.06.2015 22:04:48
Hallo Udo,
ich danke dir.
Das Passt wunderbar
Gruß
Alex

Bild

Betrifft: AW: Kontextmenü mit Untermenü
von: Luschi
Geschrieben am: 03.06.2015 05:21:08
Hallo Alexander,
ich benutze die Kontectmenüerstellung auf der Basis von ' Application.CommandBars("Cell")' nicht mehr, das es Situationen gibt, wo Ecxel das Kontextmenü neu zeichnet und damit meine definierten Menüpunkte erst mal weg sind. So ein Fall sind die Bereiche, die 'als Tabelle formatiert' wurden. Diese Formatvorlage überschreibt das normale Kontextmenü der Zellen.
Deshalb mache ich es so:
https://www.herber.de/forum/messages/1428396.html
Gruß von Luschi
aus klein-Paris

Bild

Betrifft: AW: Kontextmenü mit Untermenü
von: Alexander
Geschrieben am: 03.06.2015 17:06:14
Danke Luschi für den Tip
Gruß
Alex

Bild

Betrifft: @Luschi nachgefragt
von: Alexander
Geschrieben am: 04.06.2015 22:25:06
Hallo Luschi,
Gibt es bei dieser Methode die möglichkeit das Standard Kontextmenü zu erweitern ohne alles nachbauen zu müssen? Denn mir ist aufgefallen das die Standard Funktionen unterschiedliche IDs bei verschiedenen Versionen haben.
Gruß
Alex

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Kontextmenü mit Untermenü"