Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Makroaufruf über Kontextmenü in einer Excel-Tabelle

Forumthread: Makroaufruf über Kontextmenü in einer Excel-Tabelle

Makroaufruf über Kontextmenü in einer Excel-Tabelle
02.02.2026 14:21:28
flo4711
Hallo,

über die Suche in diesem Forum habe ich eine Möglichkeit gefunden, ein Makro über das Kontextmenü im Excel aufzurufen .
https://www.herber.de/forum/archiv/912to916/913566_makros_ins_kontextmenue.html#7

Das funktioniert so wie gefordert auch.
Ich bräuchte allerdings den Makroaufruf im Kontextmenü einer Tabelle auf einem Arbeitsblatt.
Gibt es auch hierfür eine Möglichkeit?

Hintergrund ist Folgender:
Wir würden gerne aus unserer IT-Inventarliste heraus (liegt als Excel-Tabelle vor) die Login-Logs auf unserem Domain-Controller nach bestimmten Kriterien durchsuchen (Rechnername, Benutzer, IP-Adresse, ...).
Ich hatte mir das dann so vorgestellt, dass die Zelle mit dem Suchkriterium (z.B. IP-Adresse) markiert, das Kontextmenü über die rechte Maustaste aufgerufen und das "Suchen-Makro" mit dem Zellwert hierüber dann gestartet wird.

Gruß
Gode
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makroaufruf über Kontextmenü in einer Excel-Tabelle
02.02.2026 15:17:50
daniel
mach doch den Makroaufruf direkt über das BeforRightclick-Event des Tabellenblatts.
dann gilt das nur für dieses Tabellenblatt und du kannst auch noch abfragen, in welchem Zellbereich der Klick stattgefunden hat (Target).

wenn die Anwender aber auch manchmal das normale Kontextmenü nutzen können sollen, kannst du das ja so erweitern:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

If Not Intersect(Target, Range("A:A")) Is Nothing Then
Select Case MsgBox("Suche ausführen?", vbQuestion + vbYesNoCancel)
Case vbYes
Call Beep
Cancel = True
Case vbNo
Case vbCancel
Cancel = True
End Select
End If
End Sub

für "Beep" bitte dein Makro einsetzen.

bei Rechtsklick innerhalb der Spalte A wird der Anwender gefragt, ob das Suchmakro ausgeführt werden soll. Wenn, "ja" passiert das, wenn "nein", wird das Kontextmenü geöffnet und bei "Abbrechen" passiert nichts.
ja ist jetzt eine Abfrage mehr, aber du musst keine Menüs umstellen und hinterher wieder auf "normal" zurückbauen.

Gruß Daniel
Anzeige
Also es gibt...
02.02.2026 18:18:55
Case
Moin, :-)

verschiedene Kontextmenüs. Du nutze das für die Zellen "Cell". Wenn du es für eine "Tabelle" im Tabellenblatt nutzen möchtest, dann ist es das "List Range Popup". ;-)
Allerdings gibt es da drei Möglichkeiten: ;-)

  • Normale Zellen = "Cell"

  • Tabelle/Datenbereich = "List Range Popup"

  • Tabelle/Kopfzeile = "List Header Popup"

  • Tabelle/Ergebniszeile = "List Total Popup"

  • Wenn der Cursor in einer "normalen" Zelle ist, oder im Datenbereich der "Tabelle", dann so fürs Erstellen: ;-)
    Option Explicit
    
    Public Sub SetCommandbar()
    Dim objButton As CommandBarButton
    If Not Intersect(Selection, ActiveCell.ListObject.DataBodyRange) Is Nothing Then
    Set objButton = CommandBars("List Range Popup").Controls.Add(Type:=msoControlButton, Temporary:=True)
    Else
    Set objButton = CommandBars("Cell").Controls.Add(Type:=msoControlButton, Temporary:=True)
    End If
    With objButton
    .Caption = "Mein Button"
    .FaceId = 59
    .OnAction = "MeinMakro"
    .Tag = "Finde mich"
    .TooltipText = "Klick mich"
    End With
    End Sub

    Es kommt natürlich auf die Arbeitsweise an, wann man was wo ausführt bzw. einrichtet. ;-)

    Servus
    Case
    Anzeige
    AW: Makroaufruf über Kontextmenü in einer Excel-Tabelle
    02.02.2026 23:07:38
    Kuwer
    Hallo Gode,

    oder einfach per Doppelklick auf eine Zelle geht so z.B.:
    'Modul des Tabellenblattes
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Len(Target.Value) Then
    Cancel = True
    SuchMakro Target.Value
    End If
    End Sub

    'allgemeines Modul
    
    Sub SuchMakro(varS As Variant)
    MsgBox varS
    End Sub

    Gruß, Uwe
    Anzeige
    AW: Makroaufruf über Kontextmenü in einer Excel-Tabelle
    03.02.2026 09:39:02
    flo4711
    Hallo,

    vielen Dank Euch Dreien!
    Wer die Wahl hat ;-) ... funktionieren alle 3 Optionen ... wobei ich bei der Doppelklick-Variante analog zu Daniels Beispiel die Such noch abfragen würde.

    Derzeit tendiere ich zu Daniel's Vorschlag, da bei der Kontextmenü-Variante der Reset des Menüeintrages irgendwie nicht zuverlässig funktioniert ... ich hatte vorhin irgendwann 4 Kontextmenü-Einträge mit "Mein Button" ?!

    Auf jeden Fall finden wir hier jetzt einen für uns passenden Lösungsansatz raus ... herzlichen Dank nochmal für Eure schnellen und guten Vorschläge!

    Gruß Gode
    Anzeige
    AW: Makroaufruf über Kontextmenü in einer Excel-Tabelle
    03.02.2026 11:23:04
    schauan
    Hallöchen,

    dort habe ich eine Lösung, die das Kontextmenü der Tabelle nutzt.

    https://www.clever-excel-forum.de/Thread-Excel-MP3-Lister-Player-Playlist?pid=64301#pid64301

    Der entsprechende code ist

    Option Private Module
    
    Option Explicit
    Public Sub ZuKontext()
    'Kontextmenue Tabelle (Liste) erweitern
    'erst mal zuruecksetzen, falls vorhanden
    Call KontextReset
    'Mit dem Kontextmenue Tabelle
    With Application.CommandBars("List Range Popup")
    'Popup-Button hinzufuegen
    With .Controls.Add(msoControlPopup)
    'Beschriftung aus Zelleintrag
    .Caption = "MP3-Verwaltung"
    'Button hinzufuegen
    With .Controls.Add(msoControlButton)
    'Beschriftung hinzufuegen
    .Caption = "Play MP3"
    'Makroaufruf hinzufuegen
    .OnAction = "Play_M3U"
    'Ende Button hinzufuegen
    End With
    'Button hinzufuegen
    With .Controls.Add(msoControlButton)
    'Beschriftung hinzufuegen
    .Caption = "Read MP3 Files"
    'Makroaufruf hinzufuegen
    .OnAction = "GetMP3Files"
    'Ende Button hinzufuegen
    End With
    'Ende Popup-Button hinzufuegen
    End With
    'Ende Mit dem Kontextmenue Tabelle
    End With
    End Sub

    Public Sub KontextReset()
    'Kontextmenue Tabelle (Liste) *MP3* zuruecksetzen
    Dim cmdBar As CommandBar, cmdCtrl As CommandBarControl
    'Kontextmenue zuweisen
    Set cmdBar = Application.CommandBars("List Range Popup")
    'Schleife ueber alle EIntraege
    For Each cmdCtrl In cmdBar.Controls
    'Wenn der Tag MP3 ist, dann Control loeschen
    If cmdCtrl.Caption Like "*MP3*" Then
    cmdCtrl.Delete
    End If
    'Ende Schleife ueber alle EIntraege
    Next
    End Sub

    Anzeige
    Das dachte ich...
    03.02.2026 13:30:31
    Case
    Moin, :-)

    … mir. ;-)

    Ich würde auch die Versionen von Uwe und Daniel vorziehen. Kontextmenüs sind etwas hakelig zu programmieren. Beim Anlegen eines Button im Kontextmenü musst du "Global" denken, die "Logik/Auswertung" gehört dann ins Makro - wie bei André. ;-)

    Hier mal meine Beispieldatei: ;-)
    https://www.herber.de/bbs/user/180151.xlsb

    Hier kannst du im Tabellenblatt einen Rechtsklick machen, oder in einer "Tabelle" - im Datenbereich, Kopfzeile oder Ergebniszeile. Im Makro kanntst du bei Bedarf dann unterscheiden. ;-)

    Etwas Arbeit musst du investieren - die Datei ist Kennwortgeschützt (alle Buchstaben klein - bis auf den Einen - 5.). ;-)

    1. Stelle des Kennwortes:
    Der erste Buchstabe des einzigen geraden Primzahlwortes.

    2. Stelle des Kennwortes:
    Die Anzahl der Monate, die mit demselben Buchstaben beginnen, mit dem auch „März“ beginnt.

    3. Stelle des Kennwortes:
    Der letzte Buchstabe des längsten deutschen Zahlwortes unter 100.

    4. Stelle des Kennwortes:
    Die erste Ziffer der kleinsten dreistelligen Quadratzahl.

    5. Stelle des Kennwortes (Buchstabe Groß schreiben):
    Der erste Buchstabe der Farbe, die entsteht, wenn man Blau und Gelb mischt.

    6. Stelle des Kennwortes:
    Die Anzahl der Buchstaben des Wortes "Zahl der natürlichen Zahlen zwischen 1 und 10".

    7. Stelle des Kennwortes:
    Der dritte Buchstabe des Wortes, das man erhält, wenn man "IT" ausschreibt.

    8. Stelle des Kennwortes:
    Der letzte Buchstabe des deutschen Wortes für die Zahl der Ecken eines Würfels.

    Servus
    Case
    Anzeige
    AW: Makroaufruf über Kontextmenü in einer Excel-Tabelle
    03.02.2026 11:25:29
    schauan
    Dazu kommen dann noch die entsprechenden Aufrufe in DieseArbeitsmappe

    Private Sub Workbook_Activate()
    
    ZuKontext
    End Sub

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    KontextReset
    End Sub

    Private Sub Workbook_Deactivate()
    KontextReset
    End Sub

    Private Sub Workbook_Open()
    ZuKontext
    End Sub

    Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    ZuKontext
    End Sub

    Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    KontextReset
    End Sub
    Anzeige
    Anzeige
    Anzeige
    Live-Forum - Die aktuellen Beiträge
    Datum
    Titel
    14.05.2026 13:31:09
    14.05.2026 09:50:42
    13.05.2026 19:14:18