In modernen Browsern wie Chrome oder Edge ist es längst selbstverständlich: Mit Tastenkombinationen wie Alt + 1, Alt + 2, Alt + 3 kann man blitzschnell zwischen geöffneten Tabs springen. Hat man diesen Shortcut einmal verinnerlicht, will man nicht mehr ohne arbeiten. Die Tastenkombinationen sind viel schneller, als wenn man mit der Maus auf den jeweiligen Reiter klickt. Man könnte zwar auch per Strg + Tab zwischen den Seiten wechseln, aber warum nicht direkt zur gesuchten Information springen? Da wir auch in Access standardmäßig eine Ansicht vorfinden, die über entsprechend Reiter angesteuert werden kann, stellt sich die Frage: Können wir nicht auch hier solche Tastenkombinationen nutzen? Genau das untersuchen wir in diesem Beitrag.
Alt+1, Alt+2, Alt+3 für Formulare in Registerkartenansicht
Access zeigt bei neu angelegten Datenbanken zunächst alle neu erstellten oder geöffneten Elemente als Tab an, der den vollständigen Arbeitsbereich des Access-Fensters einnimmt. Dem einen mag das gefallen, andere bevorzugen die Anzeige als überlappende Fenster. Bevor wir in unsere Lösung einsteigen, schauen wir uns kurz an, wie wir standardmäßig verwendete Einstellung ändern können.
Dazu benötigen wir den Dialog mit den Access-Optionen, den wir über Datei|Optionen öffnen. Hier wechseln wir zum Bereich Aktuelle Datenbank und finden dort die Option Dokumentfensteroptionen vor (siehe Bild 1).
Bild 1: Optionen zum Einstellen der Anzeige von Fenstern innerhalb von Access
Der Bereich, in dem sich diese Option befindet, deutet bereits darauf hin, dass es sich um eine Einstellung handelt, die individuell je Datenbank vorgenommen werden kann.
Die aktuelle Standardeinstellung lautet Dokumente im Registerkartenformat und zusätzlich ist die Option Dokumentregisterkarten anzeigen aktiviert.
Dies führt zu der Anzeige, auf die sich dieser Beitrag bezieht (siehe Bild 2). Wenn wir hier die Option Dokumentregisterkarten anzeigen deaktivieren, blendet Access die Registerreiter aus und wir sehen nur das aktuell aktive Formular.
Bild 2: Registerkarten einer Access-Anwendung
Sollten wir jedoch die Option Dokumentfensteroptionen auf Überlappende Fenster einstellen, sehen wir erstens keine Registerreiter für die Fenster. Wir können die geöffneten Fenster zwar nach wie vor maximieren, aber auch als einzelne Fenster innerhalb des Arbeitsbereichs von Access positionieren. Anwendungen, die das gleichzeitige Anzeigen mehrerer Formulare erfordern, sind mit dieser Einstellung am besten bedient.
Wechseln zwischen den Registerkarten
Wir wollen uns jedoch auf die Einstellung im Registerkartenformat mit Registerkartenreitern konzentrieren. Die überlicherweise verwendeten Methoden zum Wechseln des aktuell im Vordergrund befindlichen Fensters sind die Folgenden:
- Anklicken des gewünschten Registerreiters mit der Maus
- Betätigen der Tastenkombination Strg + Tab, um vom aktiven zum nächsten Register zu wechseln. Man kann übrigens nicht mit Umschalt + Strg + Tab in die entgegengesetzte Richtung wechseln, wie es bei anderen Anwendungen möglich ist. Diese Funktion können wir aber auch noch nachreichen.
Es gibt keine andere eingebaute Methode, Tastenkombinationen wie Strg + 1 et cetera betätigen wir ohne jeden Effekt.
Ziel: Alt+1 bis Alt+9 aktivieren
Unser Ziel ist es, Alt + 1 bis Alt + 9 so zu programmieren, dass bei Betätigen dieser Tastenkombination das entsprechende Formular aktiviert wird – genau wie im Browser.
Unser erster Ansatz ist, jedem Formular eine Ereignisprozedur hinzuzufügen, die auf das Betätigen der entsprechenden Tastenkombination reagiert und den Fokus auf die entsprechende Registerkarte verschiebt.
Vorbereitung
Damit Access auf Tastatureingaben reagiert, müssen wir die Eigenschaft Tastenvorschau aller beteiligten Formulare auf Ja einstellen. Das bewirkt, dass alle Tastaturereignisse zuerst an das entsprechende Ereignis des Formulars gesendet werden und nicht etwa an ein Steuerelement, das gerade den Fokus hat.
Diese Einstellung führen wir wie in Bild 3 durch.
Bild 3: Einstellen der Eigenschaft Tastenvorschau auf den Wert Ja
Wie kann ich die Tabs gezielt aktivieren?
Bevor wir überhaupt Code schreiben, der die aktive Registerseite aktivieren soll, müssen wir uns überlegen, wir man überhaupt eine Registerseite aktiviert. Wir gehen hier davon aus, dass wir die Technik nur für Formulare einsetzen.
Hinter jedem Tab steckt also ein Formular, was bedeutet, dass wir diese über die Forms-Auflistung aktivieren können. Probieren wir das aus, sehen wir:
Forms(0).SetFocus aktiviert das erste Registerblatt, Forms(1).SetFocus das zweite und so weiter. Die Formulare werden also entsprechend der Reihenfolge der Registerseiten indiziert, sodass wir über den 0-basierten Index auf diese zugreifen können.
Anlegen der Ereignisprozedur
Nun wollen wir dafür sorgen, dass beim Betätigen einer der Tastenkombinationen Alt + 1 bis Alt + 9 die entsprechende Registerseite aktiviert wird.
Dazu hinterlegen wir zuerst für das Formular frm1 eine Ereignisprozedur, die durch das Ereignis Bei Taste ab des Formulars ausgelöst wird. Dazu wählen wir für die entsprechende Eigenschaft den Eintrag [Ereignisprozedur] aus und klicken auf die Schaltfläche mit den drei Punkten (siehe Bild 4).
Bild 4: Anlegen der Ereignisprozedur
Dies zeigt die automatisch angelegte, noch leere Ereignisprozedur im VBA-Editor an, die wir wie in Bild 5 ergänzen.
Bild 5: Die fertige Ereignisprozedur
Der Code erledigt im Einzelnen die folgenden Schritte:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo