Thomas Risi Softwareentwicklung

Kontextmenü für eine ListBox

Um einer ListBox, oder einem anderen Control, auf einer UserForm ein Kontextmenü anzuhängen, kann man so vorgehen.


Quellcode für normales Modul ...

Option Explicit ' Dieser Code wird ausgeführt, wenn MenuItem1 geklickt wird Private Sub Makro1() UserForm1.Caption = "Test" End Sub ' Diese Code wird ausgeführt, wenn MenuItem2 geklickt wird Private Sub Makro2() MsgBox "Test" End Sub ' Dieser Code wird ausgeführt, wenn MenuItem4 geklickt wird Private Sub Makro3() MsgBox "Ganz einfach ..." End Sub

Quellcode für die UserForm ...

Option Explicit Dim m_Menu As CommandBar ' Das Kontextmenü Dim m_MenuItem1 As CommandBarButton ' Menüpunkt 1 Dim m_MenuItem2 As CommandBarButton ' Menüpunkt 2 Dim m_MenuItem3 As CommandBarButton ' Menüpunkt 3 ' Wenn in der ListBox1 die rechte Maustaste gedrückt wird, dann ' öffnet sich das Kontextmenü. Private Sub ListBox1_MouseDown(ByVal Button As Integer, _ ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 2 Then m_Menu.ShowPopup End Sub Private Sub UserForm_Initialize() ' Dummy-Einträge in die ListBox ListBox1.AddItem "Eintrag 1" ListBox1.AddItem "Eintrag 2" ListBox1.AddItem "Eintrag 3" On Error Resume Next CommandBars("TestMenu").Delete On Error GoTo 0 If m_Menu Is Nothing Then Set m_Menu = Application.CommandBars.Add(Name:="TestMenu", _ Position:=msoBarPopup, Temporary:=False) Set m_MenuItem1 = m_Menu.Controls.Add(msoControlButton) Set m_MenuItem2 = m_Menu.Controls.Add(msoControlButton) Set m_MenuItem3 = m_Menu.Controls.Add(msoControlButton) m_MenuItem1.Caption = "&MenuItem1" m_MenuItem2.Caption = "Menu&Item2" m_MenuItem3.Caption = "Me&nuItem3" m_MenuItem1.OnAction = "Makro1" m_MenuItem2.OnAction = "Makro2" m_MenuItem3.OnAction = "Makro3" End If End Sub

Bewerten Sie bitte dieses Programm.
1 2 3 4 5
Weniger nützlich Sehr nützlich
Bitte teilen Sie uns mit, warum Sie das Programm so bewertet haben. (optional)