Ereignisprozeduren

Ohne Ereignisprozeduren läuft nicht viel in Access-Anwendungen: Wer Klicks auf Schaltflächen, Datensatzwechsel, Öffnungs- oder Schließvorgänge von Formularen mit Funktionen hinterlegen möchte, verwendet am besten die für diesen Zweck vorgesehenen Ereigniseigenschaften in Kombination mit entsprechenden VBA-Prozeduren. Wir zeigen Ihnen, wie Sie schnell zu Ihrer ersten Ereignisprozedur kommen und was es dabei zu beachten gilt.

Grundlagen

Die meisten Beitrag von Access im Unternehmen werden Ihnen völlig unverständlich bleiben, wenn Sie noch nie mit Ereignisprozeduren gearbeitet haben. Daher möchten wir einmal grundlegend erläutern, was es mit Ereignisprozeduren auf sich hat und welche Möglichkeiten sich hier bieten.

In einem weiteren Beitrag setzen wir dann auf dem hier gewonnenen Wissen auf und gehen dann in die Vollen – Sie werden dann einige Tricks und Kniffe kennen lernen, die den Aufbau Ihrer Anwendungen merklich optimieren werden.

Ereignisprozeduren sind im Prinzip nichts weiter als herkömmliche Routinen, die den enthaltenen Code ausführen. Der Unterschied etwa zu einer üblichen Function- oder Sub-Prozedur ist, dass Ereignisprozeduren nicht durch einen herkömmlichen Aufruf von anderer Stelle gestartet werden. Dies ist zwar auch möglich, hauptsächlich jedoch werden Ereignisprozeduren durch fest definierte Ereignisse ausgelöst.

Dies kann beispielsweise ein Klick auf eine Schaltfläche, die Auswahl eines Kombinationsfeldeintrags, das Öffnen eines Formulars oder auch das Wechseln des Datensatzes im Formular sein.

Ereignisse sind immer für bestimmte Objekte definiert, die Access Ihnen ganz einfach über das Eigenschaftsfenster des jeweiligen Objekts in Kombination mit dem VBA-Editor zugänglich macht.

Dazu muss das jeweilige Objekt entweder markiert sein oder Sie wählen einfach das gewünschte Objekt über das oben im Eigenschaftsfenster befindliche Kombinationsfeld aus.

Wenn Sie einem Formular eine Schaltfläche hinzufügen, finden Sie in der Entwurfsansicht im Bereich Ereignisse des Eigenschaftsfensters eine Reihe von Einträgen, die allesamt dem Festlegen von Ereignissen dienen (siehe Bild 1). Wenn der Benutzer nun auf diese Schaltfläche klickt, schaut Access – vereinfacht gesagt – nach, ob für einen Mausklick ein Ereignis festgelegt wurde.

pic001.png

Bild 1: Die Ereigniseigenschaften einer Schaltfläche

Dies geschieht in der Eigenschaft Beim Klicken, wo Sie mehrere Optionen haben: Sie können dort festlegen, dass eine Ereignisprozedur, eine herkömmliche Funktion oder ein Makro ausgeführt werden soll. Um es kurz zu machen: Nur die Ereignisprozedur bietet den vollen Komfort, weshalb wir auf Funktionen und Makros als Ziel einer Ereigniseigenschaft hier nicht eingehen.

Die möglichen Werte für Ereigniseigenschaften schränken Sie damit merklich ein: Sie können dort lediglich noch den Wert [Ereignisprozedur] eintragen – oder aber das englische Pendant [Event Procedure], was in der deutschen Version aber gleich in [Ereignisprozedur] umgewandelt wird.

Ein kleiner Hinweis: Im Beitrag Ereignisprozeduren implantieren (Shortlink 686) erfahren Sie, wie Sie diese Eigenschaft per VBA-Code setzen. Sie sollten dort immer die englische Variante verwenden – zumindest, wenn auch nur die geringste Chance besteht, dass der Code einmal auf einem anderssprachigen System laufen soll.

Nun besitzt die Eigenschaft Beim Klicken zwar den Wert [Ereignisprozedur], beim Klick auf die Schaltfläche tut sich aber nichts. Das ist auch klar: Immerhin gibt es ja noch gar keine Ereignisprozedur. Diese muss bestimmten Konventionen gehorchen, die sich jedoch auf die Deklarationszeile der Prozedur beschränken und sich auf den Namen und die nötigen Parameter beziehen. In Abhängigkeit vom Objekt, welches das Ereignis auslöst, und vom Ereignis selbst besitzt die Ereignisprozedur unterschiedliche Parameter.

Zum Glück brauchen Sie die nicht jedes Mal abzutippen oder gar auswendig zu kennen, denn Access bietet gleich mehrere Möglichkeiten, den Prozedurrumpf automatisch anlegen zu lassen.

Klicken Sie nach dem Markieren der gewünschten Ereigniseigenschaft einfach auf die nun erscheinende Schaltfläche mit den drei Punkten (…) und wählen Sie im Dialog Generator auswählen den Eintrag Code-Generator aus (siehe Bild 2). Nach einem Klick auf OK öffnet Access den VBA-Editor und legt automatisch den Prozedurrumpf der Ereignisprozedur an (siehe Bild 3).

pic002.png

Bild 2: Anlegen einer Ereignisprozedur über den Dialog Generator auswählen

pic003.png

Bild 3: Prozedurrumpf einer frisch angelegten Ereignisprozedur

Wo aber befinden wir uns nun Jede Access-Datenbank besitzt ein eigenes VBA-Projekt, dessen Aufbau und Inhalt mit der .mdb– oder .accdb-Datei gespeichert wird. Das VBA-Projekt kann Standardmodule, unabhängige Klassenmodule und Klassenmodule von Formularen und Berichten enthalten.

Das, was Access beim Anlegen der ersten Ereignisprozedur eines Formulars anzeigt, ist ein neues Formularklassenmodul. Dessen Name besteht immer aus dem Ausdruck Form_ und dem Namen des Formulars aus dem Datenbankfenster beziehungsweise Navigationsbereich (unter Access 2007). Wenn Sie ein leeres Klassenmodul anlegen möchten, das die Ereignisprozeduren eines Formulars enthält, gibt es dazu über die Benutzeroberfläche nur einen einzigen Weg: Sie müssen die Eigenschaft Enthält Modul des Formulars auf Ja einstellen.

Zurück zu unserer frisch angelegten Prozedur: Im Rumpf fügen Sie die Anweisungen ein, welche die Prozedur ausführen soll, zum Beispiel eine einfache MsgBox-Meldung:

Private Sub cmdOK_Click()
    MsgBox "cmdOK angeklickt"
    End Sub

Alternativ können Sie für die Ereigniseigenschaft auch gleich den Eintrag [Ereignisprozedur] auswählen und auf die Schaltfläche mit den drei Punkten klicken, um den Prozedurrumpf anzulegen. Noch einfacher wird es, wenn Sie die Eigenschaft Immer Ereignisprozeduren verwenden in den Access-Optionen einstellen (bis Access 2003: Menüeintrag Extras|Optionen, Registerkarte Formulare/Berichte; Access 2007: Office-Menü, Schaltfläche Access-Optionen, Bereich Objekt-Designer|Formulare/Berichte).

Sie brauchen dann im Eigenschaftsfenster nur noch die Ereigniseigenschaft zu markieren und auf die Schaltfläche mit den drei Punkten zu klicken – der Eintrag [Ereignisprozedur] wird dann automatisch festgelegt und die Prozedur angelegt.

Hier tragen Sie nun den Code ein, der beim Anklicken der Schaltfläche ausgelöst werden soll. Die zweite Variante zum Anlegen einer Ereignisprozedur finden Sie gleich im VBA-Editor: Hier wählen Sie im Kombinationsfeld oben links im Codefenster das Element aus, welches das Ereignis auslösen soll, und stellen mit dem rechten Kombinationsfeld den Typ des Ereignisses ein. Wenn Sie noch keine Ereignisprozedur für ein Element angelegt haben, erstellt der VBA-Editor automatisch eine Standardprozedur, die Sie aber wieder löschen können, wenn Sie diese nicht verwenden wollen.

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

Schreibe einen Kommentar