VBA: Menüs ändern und erzeugen

Benutzerdefinierte Menüs, ganz nach Wunsch!

Bisher noch keine Bewertungen für diesen Artikel.

Benutzerdefinierte Menüs lassen sich in allen MS Office-Programmen sehr einfach zusammenstellen. Mit ein wenig VBA-Programmierung lässt sich da noch viel mehr herausholen.

Menü erstellen

Benutzerdefinierte Menüs lassen sich in allen MS Office-Programmen einfach mit der Maus im Dialog zusammenstellen und sind dann fertig. Fertig? Nein, denn Lorenz Hölscher zeigt Ihnen, wie Sie da mit ein wenig VBA-Programmierung noch viel mehr herausholen.

Die folgenden Beispiele wurden in Word erstellt, funktionieren aber mit geringfügigen Änderungen (ThisDocument heißt in Excel ThisWorkbook oder in Access CodeDB) auch in den übrigen MS Office-Programmen.

mehr ...

Menüeinträge bearbeiten

Wenn Sie jetzt die neuen Menüeinträge anklicken, erhalten Sie, je nach Word-Version, eine Fehlermeldung wie die folgende:

Aufruf eines nicht vorhandenen Makros per Menüeintrag

mehr ...

Untermenüs

Wie oben bereits erwähnt, können Sie natürlich auch innerhalb eines eigenen Menüs Untermenüs anlegen. Dazu ändert sich der Typ des Menüeintrags von msoControlButton auf msoControlPopUp, damit dort wieder ein Menü ausklappen kann.

Der folgende Code bereitet schon ein Untermenü vor, welches später mal alle Absätze des Dokuments nennt und die Möglichkeit bietet, einen davon zu markieren. Wie Sie sehen, wird das Untermenü dabei gar nicht wirklich angelegt, sondern lediglich eine Sub-Prozedur SammleAbsaetze aufgerufen:

mehr ...

Menü-Einträge finden

Bisher war es immer sehr praktisch, dass die Menü-Einträge ihre Position nicht verändert haben. Spätestens bei solchen dynamischen Menüs oder auch schon beim Verändern eingebauter Menü-Einträge müssen Sie jedoch manchmal den gewünschten Menü-Eintrag erst suchen (lassen).

Dazu gibt es eine eigene FindControl-Methode einer Commandbar, die solche Menü-Einträge findet - oder auch nicht, denn sie enthält ein paar Tücken. Es gibt sie im Grunde in zwei Varianten, für eigene und für fremde Menü-Einträge.

mehr ...