Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Viele Themen in diesem Magazin drehen sich um die Programmierung des VBA-Editors. Damit erweitern wir das wichtigste Werkzeug für Programmierer, die sich um die Automation von Anwendungen wie Access, Excel, Outlook oder Word beschäftigen. Ein wichtiger Teil des VBA-Editors sind die Menüleisten, Symbolleisten und Kontextmenüs. Was sind diese drei Elemente überhaupt und wie können wir diese anpassen – sowohl über die Benutzeroberfläche als auch per VBA? Dieser Artikel beleuchtet die wichtigsten Möglichkeiten und zeigt, wie Du das Menüsystem nutzen kannst, um einen optimalen Workflow zu gewährleisten und auch Deine eigenen Erweiterungen, beispielsweise in Form von COM-Add-Ins, an der richtigen Stelle einzubauen.
Grundlagen zu Menüsystem des VBA-Editors
Im Menüsystem des VBA-Editors gibt es drei verschiedene Arten von Menüs.
Wer schon vor 2007 Office-Anwendungen wie Access, Excel oder Word programmiert hat, kennt das hier verwendete Menüsystem auch noch von diesen Anwendungen. Office 2003 war die letzte Office-Version, die mit dem alten Menüsystem ausgestattet war. Dann hat Microsoft mit Office 2007 das Ribbon als neues Menüsystem eingeführt.
Das alte Menüsystem war, was die Anpassbarkeit und die Programmierbarkeit anging, durchaus einfacher handzuhaben. Wer erst später in die Office-Programmierung eingestiegen ist und sich nun mit der Anpassung und Programmierung des Menüsystems des VBA-Editors beschäftigt, erhält also nun einen Einblick und kann entscheiden, ob “früher alles besser war”. Tatsächlich spielt das keine Rolle, denn wer einigermaßen auf dem Stand der Technik bleiben will, arbeitet nicht mehr mit Microsoft Office 2003 und älter (auch wenn es in der Praxis immer wieder Kunden gibt, die das dennoch tun).
Bild 1 zeigt alle drei Arten von Menüs:
Bild 1: Alle drei Arten von Menüs
- Jede Anwendung enthält eine Menüleiste. Das ist das Hauptmenü, über das man in der Regel thematisch sortierte Untermenüpunkte aufklappen und aufrufen kann.
- Außerdem kann eine Anwendung beliebig viele Symbolleisten enthalten. Diese werden normalerweise unterhalb der Menüleiste angeordnet, können aber auch freischwebend platziert werden.
- Schließlich finden wir verschiedene Kontextmenüs vor. Diese können wir durch einen rechten Mausklick auf verschiedene Elemente öffnen. Es wird jeweils das Kontextmenü mit den für das geöffnete Element passenden Befehlen geöffnet.
Menüsystem im VBA-Editor über die Benutzeroberfläche anpassen
Wir können verschiedene Aspekte des Menüsystems des VBA-Editors über die Benutzeroberfläche anpassen.
Der erste Weg und einfachste Weg beschränkt sich auf die Elemente, die wir normalerweise gar nicht sehen, sondern die erst per Rechtsklick auf ein Element auftauchen – die Kontextmenüs. Klicken wir auf dem Menüpünkt Ansicht|Symbolleisten, finden wir eine Liste aller verfügbaren Symbolleisten und können hier einzelne Einträge ein- und ausblenden. Außerdem finden wir hier noch einen Eintrag namens Anpassen… – diesen schauen wir uns später an (siehe Bild 2).
Bild 2: Ein- und Ausblenden von Menüleisten
Klicken wir die noch nicht aktivierten Einträge Bearbeiten, Debuggen und UserForm an, sehen wir, dass diese entweder direkt fest verankert oder freischwebend. eingeblendet werden (siehe Bild 3). Diese können wir nun frei bewegen und an der Stelle platzieren, wo wir diese gerade benötigen, oder wir bewegen diese in Richtung Menüleiste, wo diese dann “eingeklinkt” werden. Wenn wir freischwebende Symbolleisten bewegen wollen, können wir diese mit der Maus an der Titelleiste greifen und verschieben.
Bild 3: Alle Symbolleisten sind nun eingeblendet.
Wenn wir eine einmal eingeklinkte Symbolleiste an eine andere Stelle verschieben wollen, können wir diese am linken Rand an den drei vertikal angeordneten Punkten greifen und entweder wieder freischwebend platzieren oder einfach ihre Position im oberen Bereich ändern.
Wir können die Symbolleisten alle untereinander platzieren (siehe Bild 4) oder diese in mehreren Zeilen nebeneinander anordnen. Wie man das macht, hängt unter anderem vom verfügbaren Platz auf dem Bildschirm ab.
Bild 4: Alle Symbolleisten sind nun verankert.
Eingebaute Symbolleisten
Die eingebauten Symbolleisten liefern uns die folgenden Funktionen:
- Bearbeiten: Diese Symbolleiste sollte aus unserer Sicht standardmäßig eingeblendet sein, denn sie enthält zwei sehr wichtige Elemente – nämlich die zum Auskommentieren und Einkommentieren aller aktuell markierten Codezeilen. Außerdem finden wir hier zum Beispiel Befehle zum Setzen von Haltepunkten oder zum Aktivieren von IntelliSense. Diese Befehle würde man jedoch aus Effizienzgründen eher per Tastenkombination ausführen.
- Debuggen: In dieser Symbolleiste finden wir alle Elemente, die beim Debuggen von Code wichtig sind. Hier können wir den Code wiederum starten, pausieren oder stoppen und wir können diesen auf bestimmte Arten durchlaufen. Außerdem lassen sich hier weitere Elemente des VBA-Editors wie Lokal-Fenster, Direktfenster oder Überwachungs-Fenster einblenden.
- UserForm: Diese Symbolleiste benötigen wir, wenn wir UserForms anlegen und bearbeiten wollen.
- Voreinstellung: Dies ist die Symbolleiste, die standardmäßig eingeblendet ist. Sie enthält Befehle wie zum Speichern, zum Bedienen der Zwischenablage, zum Rückgängig machen von Aktionen, zum Starten und Stoppen von Prozeduren und zum Einblenden wichtiger Elemente wie Projekt-Explorer, Eigenschaftenfenster und Objektkatalog.
Individuelle Anpassungen
Wenn uns das Ein- und Ausblenden und das Anordnen von Symbolleisten nicht ausreicht, können wir noch einen Schritt weitergehen. Unter Ansicht|Symbolleisten gibt es den bereits weiter oben erwähnten Befehl mit der Beschriftung Anpassen…, den wir nun betätigen.
Damit blenden wir den Dialog aus Bild 5 ein. Dieser zeigt erst einmal die Symbolleisten an, die wir bereits kennengelernt haben. Außerdem finden wir hier aber auch noch einen Eintrag namens Kontextmenü und einen namens Menüleiste. Diese Darstellung liefert uns einen Hinweis, wie das Menüsystem intern aufgebaut ist: Wir arbeiten nämlich eigentlich nur mit Symbolleisten. Diese kommen allerdings in verschiedenen Ausprägungen, nämlich neben den eigentlich Symbolleisten noch als Menüleiste (eben jene Leiste, die wir auch Hauptmenü nennen könnten) und als Kontextmenüleiste. Wie wir später bei der Programmierung per VBA sehen werden, sind es lediglich die Werte von Eigenschaften, die den Unterschied ausmachen.
Bild 5: Der Dialog zum Anpassen des Menüsytems
Auch im Dialog Anpassen können wir die “normalen” Symbolleisten durch Setzen eines Hakens in den Kontrollkästchen ein- und ausblenden.
Wenn wir das beim Eintrag Menüleiste probieren, gelingt das jedoch nicht. Das zeigt: Die Anwendung muss eine Menüleiste haben, die auf diesem Wege nicht ausgeblendet werden kann.
Was aber geschieht, wenn wir den Eintrag Kontextmenü anklicken? Blenden wir damit die Kontextmenüs dauerhaft ein? Nein: Insgesamt dient das Öffnen des Anpassen-Dialogs eher dazu, das gesamte Menüsystem in einen Bearbeitungszustand zu versetzen. Und während wir die Menü- und Symbolleisten ja ohnehin schon sehen können, dient der Eintrag Kontextmenü dazu, die sonst nur per Rechtsklick sichtbaren Kontextmenüs zu Bearbeitungszwecken sichtbar zu machen.
Aktivieren wir diesen Eintrag, erscheint eine weitere Symbolleiste mit dem Titel Kontextmenü. Diese enthält drei Kategorien für verschiedene Kontextmenüs. In der zweiten namens Code-Fenster finden wir einen weiteren gleichnamigen Eintrag, der beim Anklicken alle Elemente des Kontextmenüs anzeigt, die beim Rechtsklick im Code-Fenster erscheinen (siehe Bild 6).
Bild 6: Bearbeiten von Kontextmenüs über die Benutzeroberfläche
Einstellungen eines Menüeintrags anpassen
Hier können wir nun ebenfalls mit der rechten Maustaste ein Kontextmenü öffnen, dass uns alle Möglichkeiten zum Anpassen eines Menüeintrags anzeigt (siehe Bild 7).
Bild 7: Einstellungen eines Menüeintrags anpassen
Dieses Kontextmenü können wir nicht nur für die Menüeintrage der Kontextmenüs anzeigen. Auch ein Rechtsklick auf die Einträge in der Menüleiste oder in eine der Symbolleisten zeigt das Kontextmenü zum Bearbeiten des jeweiligen Eintrags an (siehe Bild 8).
Bild 8: Auch die übrigen Menüpunkte können wir per Kontextmenü anpassen.
Wichtig ist nur, dass der Dialog Anpassen geöffnet und die Symbolleisten damit in den Bearbeitungszustand versetzt wurden.
In diesem Zustand können wir die eigentlichen Funktionen der Menüeinträge auch nicht aufrufen, sondern nur die Funktionen zum Anpassen des Menüsystems.
Welche Möglichkeiten bietet uns dieses Kontextmenü nun? Wichtig: Wir können diese Eigenschaften für die eingebauten Elemente nach Lust und Laune ausprobieren.
Mit einem Klick auf den Befehl Zurücksetzen können wir die Eigenschaften von Steuerelementen und Menüs wieder in den Anfangszustand zurückversetzen:
- Zurücksetzen: Setzt die Eigenschaften des aktuellen Steuerelements auf den Standardzustand zurück. Das bezieht sich vor allem auf Eigenschaften wie Name und Schaltflächensymbol.
- Löschen: Löscht das Steuerelement aus der Symbolleiste.
- Name: Stellt den Namen des Steuerelements ein.
- Schaltflächensymbol kopieren: Kopiert das Symbol des aktuellen Steuerelements.
- Schaltflächensymbol einfügen: Fügt ein zuvor kopiertes Schaltflächensymbol in das aktuelle Steuerelement ein.
- Schaltflächensymbol zurücksetzen: Setzt ein eventuell bearbeitetes Schaltflächensymbol in den Ausgangszustand zurück. Dieser Befehl wird nur eingeblendet, wenn das Schaltflächensymbol bereits bearbeitet wurde.
- Schaltflächensymbol bearbeiten: Versetzt das Schaltflächensymbol in den Bearbeitungszustand. Dabei wird der Schaltflächen-Editor aus Bild 9 angezeigt, mit dem wir das Symbol der Schaltfläche ändern können.
- Schaltflächensymbol ändern: Dies blendet eine Matrix mit einigen, wenigen alternativen Schaltflächensymbolen ein, aus denen wir ein neues Symbol für die aktuelle Schaltfläche auswählen können (siehe Bild 10).
Bild 9: Editor zum Bearbeiten von Schaltflächensymbolen
Bild 10: Auswahl einiger alternativer Schaltflächensymbole