Beim Öffnen einer Access-Anwendung haben Sie verschiedene Möglichkeiten, Code auszuführen – Sie können ein Formular anzeigen, das beim Öffnen Code ausführt, das AutoExec-Makro nutzen, um eine Prozedur aufzurufen oder sogar das Ribbon dafür instrumentalisieren. Wenn es jedoch um Code geht, der beim Beenden der Anwendung ausgeführt werden soll, finden wir keine offiziell dafür vorgesehene Technik. Allerdings gibt es einen Trick, um doch noch VBA-Code auszuführen, wenn die Access-Anwendung durch den Benutzer geschlossen wird.
Code beim Starten der Anwendung ausführen
Wie Sie Code ausführen, wenn der Benutzer die Datenbank öffnet, haben wir bereits in drei Beiträgen gezeigt. Das gelingt auf folgende Arten:
- Mit dem Autostart-Makro: Code beim Öffnen der Anwendung: AutoExec (www.access-im-unternehmen.de/1367)
- Mit dem Startformular: Code beim Öffnen der Anwendung: Formular (www.access-im-unternehmen.de/1368)
- Und es gelingt sogar von einem Ribbon aus, das beim Start angezeigt wird: Code beim Öffnen der Anwendung: Ribbon (www.access-im-unternehmen.de/1369)
Code beim Schließen der Anwendung ausführen
Wenn es um das Ausführen von Code beim Schließen einer Anwendung geht, finden wir allerdings wesentlich weniger Möglichkeiten.
Auch hier können wir schon vorher sagen: Es gibt kein spezielles Ereignis etwa für die Datenbank, das Sie nutzen können, um Code beim Schließen der Datenbank auszuführen.
Stattdessen behelfen wir uns mit einem Trick. Dieser sieht kurzgefasst folgendes vor:
- Wir öffnen beim Starten ein Formular, das wir aber gleich wieder ausblenden.
- Diesem Formular fügen wir eine Ereignisprozedur für das Ereignis Beim Entladen hinzu.
- Wenn der Benutzer nun die Anwendung schließen will, muss zuvor das noch offene, aber ausgeblendete Formular geschlossen werden.
- Das Schließen des Formulars erfolgt automatisch, wenn die Datenbank geschlossen wird, was nach sich zieht, dass auch die Beim Entladen-Prozedur des Formulars noch ausgeführt wird.
Beim Schließen-Code Schritt für Schritt
Schauen wir uns im Detail an, was nötig ist, um beim Schließen der Datenbank VBA-Code auszuführen.
Die erste Aktion ist das Erstellen eines Formulars, das direkt beim Start der Anwendung geöffnet und ausgeblendet wird. Dieses Formular nennen wir frmStart und es enthält keinerlei Elemente – das ist auch nicht nötig, da der Benutzer dieses nie zu Gesicht bekommt.
Die erste Frage ist: Wie sorgen wir dafür, dass das Formular direkt nach dem Start ausgeblendet wird Im Gegensatz zu Steuerelementen finden wir in den Formulareigenschaften keine Eigenschaft namens Sichtbar, also müssen wir das Formular per VBA ausblenden. Das erledigen wir so früh wie möglich, damit das Formular noch nicht einmal aufblitzt. Welche ist die erste Ereignisprozedur, wo wir diesen Schritt durchführen können
Um das herauszufinden, haben wir für die in Frage kommenden Ereigniseigenschaften jeweils eine leere Ereignisprozedur angelegt und diese mit einem Haltepunkt versehen. Das Ergebnis ist, dass das Ereignis Beim Öffnen als erstes ausgelöst wird (siehe Bild 1).
Bild 1: Ermitteln der ersten Prozedur beim Öffnen eines Formulars
Also fügen wir hier die Anweisung zum Ausblenden des Formulars ein, was wie folgt aussieht:
Private Sub Form_Open(Cancel As Integer) Me.Visible = False End Sub
Allerdings gelingt das nicht auf diese Weise, und auch nicht durch Einfügen der Prozedur in einer der übrigen im Bild zu findenden Ereignisprozeduren. Der Grund ist einfach und wir bestätigen diesen, indem wir uns jeweils den Wert der Eigenschaft Visible ausgeben lassen – zum Beispiel so:
Private Sub Form_Load() Debug.Print "Load: " & Me.Visible End Sub
Hiermit stellen wir schnell fest, dass die Visible-Eigenschaft hier ohnehin noch den Wert False aufweist, das Formular also noch gar nicht sichtbar ist. Eine Idee wäre noch, das Timer-Ereignis zu nutzen, aber bis dieses erstmalig aufgerufen wird, wurde auch das Formular bereits einmal eingeblendet.
Wir können das Formular also für diesen Zweck nicht für die Option Startformular in den Optionen der Datenbank festlegen.
Öffnen des Formulars im ausgeblendeten Modus
Wenn wir das Formular schon nicht direkt beim Öffnen unsichtbar machen können, dann müssen wir einen anderen Weg finden, das Formular direkt unsichtbar zu machen. Die einfachste Variante ist, die DoCmd.OpenForm-Methode mit einem speziellen Parameter zu nutzen. Dieser heißt WindowMode.
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