Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ID der Befehlsleisten-Buttons auslesen

Forumthread: ID der Befehlsleisten-Buttons auslesen

ID der Befehlsleisten-Buttons auslesen
16.11.2007 17:34:00
Jürgen
Hallo Forum,
Zur Erstellung eines neuen Menüs per Makro benötige ich die Id-Nummern der jeweiligen gesuchten Buttons.
In meinem Fall ist es das Button "Grafik", welches sich unter "Einfügen" befindet. Ich will also dieses Menü später über Makro aufrufen können.
Da ich das aber auch mit anderen Buttons vorhabe, stelle ich hier einmal die Frage, ob man die Id-Nummern irgendwie per Schleife auslesen kann.
Gibt es in der Hilfe eine Liste, die ich vielleicht nur nicht gefunden habe?
Gruß
Jürgen

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ID der Befehlsleisten-Buttons auslesen
16.11.2007 18:10:35
Jürgen
Hallo Forum,
Habe mich vielleicht etwas unklar ausgedrückt, deshalb noch ein Zusatz.
Die ID habe ich inzwischen aufgelistet bekommen.
Nun möchte ich aber auch das Untermenü (bei mir ist es Einfügen/Grafik) per Makro als popup bei ausgeblendeter Arbeitsblatt Menüleiste erscheinen lassen.
Gruß
Jürgen

Anzeige
AW: ID der Befehlsleisten-Buttons auslesen
16.11.2007 18:16:33
Tino
Hallo,
weis ja nicht aber vielleicht hilft dir dies weiter.
Besser in einer Neuen Mappe Testen.

Sub test()
Dim a As Long, b As Long
Cells.Clear
For a = 1 To Application.CommandBars.Count
For b = 1 To Application.CommandBars(a).Controls.Count
Cells(b, a) = Application.CommandBars(a).Controls(b).Caption
Next b
Next a
Cells.Columns.AutoFit
MsgBox [=COUNTA(1:65000)] & " Einträge gefunden"
End Sub


Gruss
Tino

Anzeige
AW: ID der Befehlsleisten-Buttons auslesen
16.11.2007 18:30:00
Jürgen
Hallo Tino,
damit komme ich mit meinem Wissen nicht weiter.
Bei der Routine, die ich hier habe, werden auch noch die Id aufgelistet.

Sub ID_Auflistung()
Dim cc As Integer
cc = 1
For n = 1 To Application.CommandBars.Count
Cells(1, cc) = Application.CommandBars(n).Name
For i = 1 To Application.CommandBars(n).Controls.Count
Cells(i + 1, cc) = Application.CommandBars(n).Controls(i).ID
Cells(i + 1, cc + 1) = Application.CommandBars(n).Controls(i).Caption
Next i
cc = cc + 2
Next n
End Sub


Das Menü "Einfügen/Grafik" bekomme ich aber trotzdem nicht unabhängig von dem Arbeitsblatt-Menü als Popup angezeigt.
Gruß
Jürgen

Anzeige
AW: ID der Befehlsleisten-Buttons auslesen
16.11.2007 19:00:34
Tino
Hallo,
hier mal noch ein Code um die Id zu verarbeiten

Dim c As Integer
For c = 1 To Application.CommandBars.FindControls(ID:=30095).Count
Application.CommandBars.FindControls(ID:=30095).Item(c).Enabled = True
Next


Gruss
Tino

Anzeige
AW: ID der Befehlsleisten-Buttons auslesen
16.11.2007 19:34:20
Jürgen
Hallo Tino,
ich danke dir für deine Mühe.
Ich weiß, wie man Menüpunkte aufbaut, setzt, löscht oder unsichtbar macht.
Ich weiß aber nicht, wie man das Untermenü "Einfügen/Grafik" unabhängig vom Arbeitsblattmenü per Makro aufruft.
Gruß
Jürgen

weis auch nicht weiter!
16.11.2007 20:14:17
Tino
Hallo,
weis auch nicht weiter!
Frage offen.
Gruss
Tino

Anzeige
AW: weis auch nicht weiter!
16.11.2007 20:23:00
Jürgen
Hallo Tino,
trotzdem Danke. ;-)
Werde mich jetzt wohl mehr mit dem Makrorecorder, bei dem ich beim ersten Anlauf nicht weiter gekommen bin, beschäftigen müssen.
Gruß
Jürgen

AW: weis auch nicht weiter!
16.11.2007 20:51:00
Jürgen
Hallo Tino,
nachdem ich die Id mittels der vorhin geposteten Routine ermittelt hatte, hat der Aufruf mit nachfolgendem Makro dann geklappt.

Sub FormatDialog1() 'Einfügen Grafik aus Datei
Dim cnt As CommandBarControl
Set cnt = Application.CommandBars.FindControl(ID:=2619)
cnt.Execute
End Sub


Diese Routine rufe ich dann über ein Normalbutton im Menü auf.
Gruß
Jurgen

Anzeige
AW: weis auch nicht weiter!
16.11.2007 21:44:00
Luschi
Hallo Jürgen ,
ich habe Deine Vba-Routine mal in Excel 2007 getestet und auch hier funktioniert sie. Man hat in E07 das Commanbars-Objekt sogar noch ausgebaut und weitere Menüpunkte hinzugesetzt (jetzt 1334 Einträge).
Warum man sich dann diese Menüstruktur nicht mehr anzeigen kann, bleibt mir 1 Rätsel. Statt dessen muß man sich mit der Multifunktionsleiste rumärgern. Wenn man wenigstens die Wahl hätte; na vielleicht passiert das mit dem Service Pack 1.
Gruß von Luschi
aus klein-Paris
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ID der Befehlsleisten-Buttons auslesen


Schritt-für-Schritt-Anleitung

Um die ID der Befehlsleisten-Buttons in Excel auszulesen, kannst du die folgende VBA-Routine verwenden. Diese Methode listet die IDs und die Beschriftungen der Buttons auf:

Sub ID_Auflistung()
    Dim cc As Integer
    cc = 1
    For n = 1 To Application.CommandBars.Count
        Cells(1, cc) = Application.CommandBars(n).Name
        For i = 1 To Application.CommandBars(n).Controls.Count
            Cells(i + 1, cc) = Application.CommandBars(n).Controls(i).ID
            Cells(i + 1, cc + 1) = Application.CommandBars(n).Controls(i).Caption
        Next i
        cc = cc + 2
    Next n
End Sub

Führe diesen Code in einem neuen Modul des VBA-Editors aus. Du kannst die Ergebnisse in einem Arbeitsblatt sehen, wo die IDs und die Beschriftungen der Buttons aufgelistet sind.


Häufige Fehler und Lösungen

  • Problem: Die ID wird nicht korrekt angezeigt.

    • Lösung: Stelle sicher, dass du die Schleife über alle CommandBars und Controls korrekt implementiert hast. Überprüfe auch, ob die Excel-Version die CommandBars unterstützt.
  • Problem: Das Untermenü "Einfügen/Grafik" wird nicht angezeigt.

    • Lösung: Um das Untermenü unabhängig vom Arbeitsblatt-Menü anzuzeigen, verwende die application.commandbars.findcontrol-Methode, wie im folgenden Beispiel:
Sub FormatDialog1() 'Einfügen Grafik aus Datei
    Dim cnt As CommandBarControl
    Set cnt = Application.CommandBars.FindControl(ID:=2619)
    cnt.Execute
End Sub

Alternative Methoden

Falls du die ID der Befehlsleisten-Buttons nicht manuell suchen möchtest, kannst du die application.commandbars.findcontrol-Methode verwenden, um spezifische Buttons zu finden und zu steuern. Hier ist ein Beispiel, um einen Button zu aktivieren:

Dim c As Integer
For c = 1 To Application.CommandBars.FindControls(ID:=30095).Count
    Application.CommandBars.FindControls(ID:=30095).Item(c).Enabled = True
Next

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die ID der Befehlsleisten-Buttons in der Praxis nutzen kannst:

  1. Grafik einfügen: Mit der oben genannten FormatDialog1-Routine kannst du das Menü "Einfügen/Grafik" schnell aufrufen, indem du die ID des Buttons verwendest.

  2. Menü anpassen: Du kannst die IDs nutzen, um eigene Menüeinträge hinzuzufügen, zu löschen oder unsichtbar zu machen, basierend auf deiner spezifischen Anwendung.


Tipps für Profis

  • Makrorecorder nutzen: Nutze den Makrorecorder, um dir die genauen Befehle und IDs zu merken, während du durch die Menüs navigierst. So kannst du später direkt auf die gewünschten IDs zugreifen.

  • Testen in einer neuen Mappe: Es ist ratsam, neue Makros in einer leeren Arbeitsmappe zu testen, um mögliche Konflikte mit bestehenden Daten oder Formeln zu vermeiden.

  • Excel-Version beachten: Achte darauf, dass die VBA-Routinen möglicherweise je nach Excel-Version variieren können, insbesondere zwischen Excel 2007 und neueren Versionen.


FAQ: Häufige Fragen

1. Wie finde ich die ID eines bestimmten Buttons?
Du kannst die oben gezeigte ID_Auflistung-Routine verwenden, um alle IDs der Buttons aufzulisten. Dadurch findest du die ID des gewünschten Buttons schnell.

2. Kann ich die IDs in einer bestimmten Excel-Version verwenden?
Ja, die meisten der genannten Methoden sind in Excel 2007 und späteren Versionen gültig. Stelle sicher, dass deine Excel-Version die CommandBars unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige