Vor Excel 2007 verwendeten VBA-Programmierer das CommandBar-Objekt zum Erstellen benutzerdefinierter Menüs, Symbolleisten und Kontextmenüs (Rechtsklick). Ab Excel 2007 befindet sich das CommandBar-Objekt an einer etwas ungewöhnlichen Stelle. Wenn Sie Code schreiben, um ein Menü oder eine Symbolleiste anzupassen, fängt Excel diesen Code ab und ignoriert viele Ihrer Befehle. Stattdessen werden Anpassungen in das allgemeine Multifunktionsleisten-Registerblatt namens Add-Ins abgelegt.
Menü- und Symbolleistenanpassungen landen in der Gruppe Add-Ins → Menübefehle oder Add-Ins → Benutzerdefinierte Symbolleisten. Da das Anpassen von Kontextmenüs (das weiterhin das CommandBar-Objekt verwendet) jedoch noch funktioniert, bleiben diese Anpassungen anwendbar.
Hinzufügen eines neuen Elements zum Zellen-Kontextmenü
Im Folgenden finden Sie Beispielcode, der dem Kontextmenü, das angezeigt wird, wenn Sie mit der rechten Maustaste auf eine Zelle klicken, ein neues Element hinzufügt. Sie können diesen Beispielcode an Ihre Bedürfnisse anpassen.
Sie können das Dienstprogramm „Groß-/Kleinschreibung ändern“ verbessern, indem Sie es über das Kontextmenü der Zelle verfügbar machen.
Code |
Beschreibung |
Sub AddToShortCut()
Dim Bar As CommandBar
Dim NewControl As CommandBarButton
DeleteFromShortcut
Set Bar = Application.CommandBars("Cell")
Set NewControl = Bar.Controls.Add(Type:=msoControlButton, ID:=1, Temporary:=True)
With NewControl
.Caption = "&Groß-/Kleinschreibung ändern"
.OnAction = "ChangeCase"
.Style = msoButtonIconAndCaption
End With
End Sub |
Dies fügt ein neues Menüelement hinzu, das beim Rechtsklick auf eine Zelle angezeigt wird. |
Wenn Sie ein Kontextmenü ändern, bleibt diese Änderung wirksam, bis Sie Excel neu starten. Die geänderten Kontextmenüs werden nicht zurückgesetzt, wenn Sie die Arbeitsmappe schließen, die den VBA-Code enthält. Daher sollten Sie immer auch einen Code zur Rückgängigmachung Ihrer Änderungen schreiben.
Die DeleteFromShortcut-Prozedur entfernt das neue Menüelement aus dem Zellen-Kontextmenü:
Sub DeleteFromShortcut()
On Error Resume Next
Application.CommandBars("Cell").Controls("Groß-/Kleinschreibung ändern").Delete
End Sub
Das folgende Bild zeigt das aktualisierte Zellen-Kontextmenü mit dem neuen Menüelement:
Die Änderungen speichern
Um das Kontextmenüelement beim Öffnen der Arbeitsmappe hinzuzufügen und es beim Schließen zu löschen, fügen Sie die folgenden beiden Ereignisprozeduren in das Codemodul ThisWorkbook hinzu:
Private Sub Workbook_Open()
AddToShortCut
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeleteFromShortCut
End Sub
Was ist anders in Excel 2013 und Excel 2016?
Eine wesentliche Änderung in Excel 2013 und 2016 ist, dass die Änderungen am Kontextmenü nur für das aktive Arbeitsmappenfenster gelten. Wenn Sie also ein Kontextmenü geändert haben, wird dieses nicht mehr global auf alle Arbeitsmappen angewendet, sondern nur auf die derzeit aktive.
Erstellen Sie benutzerdefinierte Kontextmenüs in Access 2007
Schritt 1: Erstellen Sie eine Makrogruppe
Erstellen Sie eine Makrogruppe, wobei jedes Makro ein separater Befehl in Ihrem Kontextmenü ist. Hier einige Schritte, um dies zu tun:
- Klicken Sie im Menü "Erstellen" auf "Makro".
- Fügen Sie Befehle in Ihrer Makrogruppe hinzu.
Schritt 2: Erstellen eines Menüs
Um das Menü zu erstellen, das die oben genannten Makros verwendet, erstellen Sie ein weiteres Makro mit der Aktion AddMenu.
Schritt 3: An ein Steuerelement anhängen
Das Menü kann an ein Formular, einen Bericht oder ein Steuerelement angehängt werden, indem der Name des Makros im Eigenschaftsblatt angegeben wird.
Für weitere Informationen zu Techniken zur Multifunktionsleistenanpassung, wie dem Hinzufügen benutzerdefinierter Registerkarten, besuchen Sie unseren Artikel Erstellen einer benutzerdefinierten Multifunktionsleiste in Access.
Ralf W. -
Ich bin begeistert! Eigentlich sollte ich das schon längst gewusst haben. Danke für diese wertvollen Informationen
Lara S. -
Ich benutze Excel täglich, aber die Anpassung von Kontextmenüs war mir bisher entgangen. Danke für die wertvollen Infos
David K. -
Kann ich diese Anpassungen auch für andere Office-Anwendungen verwenden, wie Word oder PowerPoint? Es wäre toll, alles zu personalisieren
Gerd L. -
Danke für die großartige Anleitung! Hast du auch Tipps, wie man sein VBA-Setup weiter optimieren kann
Marie C. -
Ich fühlte mich am Anfang überfordert mit VBA. Aber dank deiner Erklärung habe ich Vertrauen gewonnen. Danke!
Erik K. -
Tolle Tipps! Ich habe es bereits mit einem einfachen Makro ausprobiert. Jetzt arbeite ich daran, es noch weiter zu verbessern.
Tommy123 -
Ich wusste nicht, dass man die Kontextmenüs in Excel so einfach anpassen kann. Gibt es auch weitere Tipps zu VBA?