Eine einzelne Aktion, z. B. das Wechseln von einem Steuerelement für ein Objekt zu einem anderen Steuerelement, kann mehrere unterschiedliche Ereignisse auslösen, die in einer bestimmten Reihenfolge auftreten. Es ist wichtig zu wissen, wann und in welcher Reihenfolge Ereignisse auftreten, da sich dies darauf auswirken kann, wie und wann Ihre Makros oder Ereignisprozeduren ausgeführt werden. Wenn z. B. zwei Ereignisprozeduren vorhanden sind, die in einer bestimmten Reihenfolge ausgeführt werden müssen, möchten Sie sicherstellen, dass die Ereignisse, denen sie zugeordnet sind, in dieser Reihenfolge auftreten.
Inhalt dieses Artikels
Reihenfolge von Ereignissen für Steuerelemente in Formularen
Ereignisse treten für Steuerelemente in Formularen beim Verschieben des Fokus auf ein Steuerelement oder beim Ändern und Aktualisieren von Daten in einem Steuerelement auf.
Hinweis: Microsoft Office Access zeigt die Namen von Ereignissen im Visual Basic-Editor etwas anders als im Eigenschaftenblatt und im Makro-Generator an. Das Ereignis mit dem Namen Bei Fokuserhalt im Eigenschaftenblatt des Formulars und im Makro-Generator trägt z. B. den Namen GotFocus im Visual Basic-Editor. Die Beispiele in diesem Artikel verwenden das VBA-Format (Visual Basic for Applications) für die Namen von Ereignissen.
Verschieben des Fokus auf ein Steuerelement
Wenn Sie den Fokus auf ein Steuerelement in einem Formular verschieben (z. B. durch Öffnen eines Formulars, das mindestens ein aktives Steuerelement enthält, oder durch Verschieben des Fokus auf ein anderes Steuerelement im gleichen Formular), treten die Ereignisse Enter und GotFocus in der folgenden Reihenfolge auf:
Geben Sie GotFocus ein.
Beim Öffnen eines Formulars treten die Ereignisse Enter und GotFocus nach den Ereignissen beim Öffnen eines Formulars (z. B. Open, Activate und Current) wie folgt auf:
Öffnen (Formular) Aktivieren (Formular) Aktuell (Formular) Eingabe (Steuerelement) GotFocus (Steuerelement)
Wenn der Fokus von einem Steuerelement in einem Formular verschoben wird (z. B. durch Schließen eines Formulars, das mindestens ein aktives Steuerelement enthält, oder durch Verschieben des Fokus auf ein anderes Steuerelement im gleichen Formular), treten die Ereignisse Exit und LostFocus in der folgenden Reihenfolge auf:
Beenden LostFocus
Wenn Sie ein Formular schließen, treten die Ereignisse Exit und LostFocus vor den Ereignissen im Zusammenhang mit dem Schließen des Formulars (z. B. Unload, Deactivate und Close) wie folgt auf:
Beenden (Steuerelement) LostFocus (Steuerelement) Entladen (Formular) Deaktivieren (Formular) Schließen (Formular)
Ändern und Aktualisieren von Daten in einem Steuerelement
Wenn Sie Daten in ein Steuerelement in einem Formular eingeben oder in diesem ändern und dann den Fokus auf ein anderes Steuerelement verschieben, treten die Ereignisse BeforeUpdate und AfterUpdate auf:
BeforeUpdate Afte rUpdate
Die Ereignisse Exit und LostFocus für ein Steuerelement, dessen Wert sich ändert, treten nach den Ereignissen BeforeUpdate und AfterUpdate auf:
BeforeUpdate AfterUpdate Exit LostFocus
Wenn Sie den Text in einem Textfeld oder im Abschnitt „Textbereich“ eines Kombinationsfelds ändern, tritt das Ereignis Change auf. Dieses Ereignis tritt immer auf, wenn sich der Inhalt des Steuerelements ändert, aber bevor der Fokus auf ein anderes Steuerelement oder einen anderen Datensatz verschoben wird (und daher vor den Ereignissen BeforeUpdate und AfterUpdate). Die folgende Ereignissequenz tritt für jede Taste auf, die Sie in einem Textfeld oder im Abschnitt „Textfeld“ eines Kombinationsfelds drücken:
KeyDown KeyPress Dirty Change KeyUp
Das Ereignis NotInList tritt auf, nachdem Sie einen Wert in ein Kombinationsfeld eingeben, der nicht in der Kombinationsfeldliste gefunden wird, wenn Sie dann versuchen, den Fokus auf ein anderes Steuerelement oder einen anderen Datensatz zu verschieben. Das Ereignis NotInList tritt nach den die Tastaturereignissen und den Change-Ereignissen für das Kombinationsfeld auf, aber vor den Ereignissen für jedes andere Steuerelement oder das Formular. Wenn die LimitToList-Eigenschaft des Kombinationsfelds auf Yes festgelegt ist, tritt das Error-Ereignis für das Formular unmittelbar nach dem NotInList-Ereignis auf:
KeyDown KeyPress Dirty Change KeyUp NotInList 0 Fehler
Reihenfolge von Ereignissen für Datensätze in Formularen
Ereignisse treten für Datensätze in Formularen auf, wenn Sie den Fokus auf einen anderen Datensatz verschieben, Daten in einem Datensatz aktualisieren, mindestens einen vorhandenen Datensatz löschen oder einen neuen Datensatz erstellen.
Verschieben des Fokus auf Datensätze und Aktualisieren von Daten in Datensätzen
Wenn Sie den Fokus auf einen vorhandenen Datensatz in einem Formular verschieben, Daten im Datensatz eingeben oder ändern und den Fokus dann auf einen anderen Datensatz verschieben, tritt die folgende Abfolge von Ereignissen für das Formular auf:
Aktuelles (Formular) BeforeUpdate (Formular) AfterUpdate (Formular) Current (Formular)
Wenn Sie den Datensatz verlassen, dessen Daten sich geändert haben, aber bevor Sie den nächsten Datensatz eingeben, treten die Exit- und LostFocus-Ereignisse für das Steuerelement auf, das den Fokus besitzt. Diese Ereignisse treten wie folgt nach den BeforeUpdate- und AfterUpdate-Ereignissen für das Formular auf:
BeforeUpdate (Formular) AfterUpdate (Formular) Exit (Control) LostFocus (Steuerelement) Current (Formular)
Wenn Sie den Fokus zwischen den Steuerelementen in einem Formular verschieben, treten Ereignisse für jedes Steuerelement auf. Die folgenden Ereignissequenzen treten z. B. auf, wenn Sie die folgenden Aktionen ausführen:
-
Öffnen eines Formulars und Ändern von Daten in einem Steuerelement:
Aktuelles (Formular) Eingabe (Steuerelement) GotFocus (Steuerelement) BeforeUpdate (Steuerelement) AfterUpdate (Steuerelement)
-
Verschieben des Fokus auf ein anderes Steuerelement:
Exit (control1) LostFocus (control1) Enter (control2) GotFocus (control2)
-
Verschieben des Fokus auf einen anderen Datensatz:
BeforeUpdate (formular) AfterUpdate (formular) Exit (control2) LostFocus (control2) Current (formular)
Löschen von Datensätzen
Wenn Sie einen Datensatz löschen, treten die folgenden Ereignisse für das Formular auf, und Microsoft Office Access zeigt ein Dialogfeld an, in dem Sie aufgefordert werden, den Löschvorgang zu bestätigen:
Löschen BeforeDelConfirm AfterDelConfirm
Wenn Sie das Delete-Ereignis abbrechen, treten die BeforeDelConfirm- und AfterDelConfirm-Ereignisse nicht auf, und das Dialogfeld wird nicht angezeigt.
Erstellen eines neuen Datensatzes
Wenn Sie den Fokus auf einen neuen (leeren) Datensatz in einem Formular verschieben und dann einen neuen Datensatz erstellen, indem Sie Daten in ein Steuerelement eingeben, tritt die folgende Ereignissequenz auf:
Aktuelles (Formular) Eingabe (Steuerelement) GotFocus (Steuerelement) BeforeInsert (Formular) AfterInsert (Formular)
Das BeforeInsert-Ereignis (Formular) wird ausgelöst, sobald Sie mit der Eingabe des Steuerelements beginnen. Das AfterInsert-Ereignis (Formular) wird ausgelöst, nachdem Sie den Datensatz verlassen haben.
Die BeforeUpdate- und AfterUpdate-Ereignisse für die Steuerelemente im Formular und für den neuen Datensatz treten nach dem BeforeInsert-Ereignis und vor dem AfterInsert-Ereignis auf.
Reihenfolge von Ereignissen für Formulare und Unterformulare
Ereignisse treten für Formulare beim Öffnen oder Schließen eines Formulars, beim Wechseln zwischen Formularen oder beim Arbeiten mit Daten in einem Formular oder Unterformular auf.
Öffnen und Schließen eines Formulars
Wenn Sie ein Formular öffnen, tritt die folgende Ereignissequenz für das Formular auf:
Öffnen Laden Ändern der Größe Aktivieren aktuell
Wenn keine aktiven Steuerelemente im Formular vorhanden sind, tritt das GotFocus-Ereignis für das Formular nach dem Activate-Ereignis, aber vor dem Current-Ereignis auf.
Wenn Sie ein Formular schließen, tritt die folgende Ereignissequenz für das Formular auf:
Entladen Deaktivieren Schließen
Wenn keine aktiven Steuerelemente im Formular vorhanden sind, tritt das LostFocus-Ereignis für das Formular nach dem Unload-Ereignis, aber vor dem Deactivate-Ereignis auf.
Wechseln zwischen Formularen
Wenn Sie zwischen zwei geöffneten Formularen wechseln, tritt das Deactivate-Ereignis für das erste Formular und das Activate-Ereignis für das zweite Formular auf:
Deactivate (form1) Activate (form2)
Das Deactivate-Ereignis für ein Formular tritt auch auf, wenn Sie aus dem Formular zu einer anderen Objektregisterkarte in Access wechseln. Allerdings tritt das Deactivate-Ereignis nicht auf, wenn Sie zu einem Dialogfeld, zu einem Formular, dessen PopUp-Eigenschaft auf Yes festgelegt ist, oder zu einem Fenster in einem anderen Programm wechseln.
Hinweis: Das Open-Ereignis tritt nicht auf, wenn Sie den Fokus auf ein Formular verschieben, das bereits geöffnet ist. Dies gilt selbst dann, wenn Sie den Fokus auf dieses Formular durch Ausführen einer penForm-Aktion verschoben haben.
Arbeiten mit Daten in einem Formular
Formular- und Steuerelementereignisse treten auf, wenn Sie zwischen Datensätzen im Formular wechseln und Daten ändern. Wenn Sie ein Formular z. B. erstmals öffnen, tritt die folgende Ereignissequenz auf:
Öffnen (Formular) Laden (Formular) Ändern der Größe (Formular) Aktivieren (Formular) Aktuelles (Formular) Eingabe (Steuerelement)0 GotFocus (Steuerelement)
Wenn Sie ein Formular schließen, tritt analog dazu die folgende Ereignissequenz auf:
Beenden (Steuerung) LostFocus (Steuerelement) Entladen (Formular) Deaktivieren (Formular) Schließen (Formular)
Wenn Sie Daten in einem Steuerelement geändert haben, treten die BeforeUpdate- und AfterUpdate-Ereignisse für das Steuerelement und das Formular vor dem Exit-Ereignis für das Steuerelement auf.
Arbeiten mit Unterformularen
Wenn Sie ein Formular öffnen, das ein Unterformular enthält, werden das Unterformular und seine Datensätze vor dem Hauptformular geladen. Die Ereignisse für das Unterformular und dessen Steuerelemente (z. B. Open, Current, Enter und GotFocus) treten daher vor den Ereignissen für das Formular auf. Allerdings tritt das Activate-Ereignis für Unterformulare nicht auf. Daher wird durch das Öffnen eines Hauptformulars ein Activate-Ereignis nur für das Hauptformular ausgelöst.
Beim Schließen eines Formulars, das ein Unterformular enthält, werden analog dazu das Unterformular und seine Datensätze nach dem Formular entladen. Das Deactivate-Ereignis tritt für Unterformulare nicht auf. Daher wird durch das Schließen eines Hauptformulars ein Deactivate-Ereignis nur für das Hauptformular ausgelöst. Die Ereignisse für die Steuerelemente, das Formular und das Unterformular treten in der folgenden Reihenfolge auf:
-
Ereignisse für die Steuerelemente des Unterformulars (z. B. Exit und LostFocus)
-
Ereignisse für die Steuerelemente des Formulars (einschließlich des Unterformularsteuerelements)
-
Ereignisse für das Formular (z. B. Deactivate und lose)
-
Ereignisse für das Unterformular
Hinweis: Da die Ereignisse für ein Unterformular nach dem Schließen des Hauptformulars auftreten, treten bestimmte Ereignisse nicht auf, z. B. das Abbrechen des Schließvorgangs des Hauptformulars durch ein Ereignis im Unterformular. Möglicherweise müssen Sie diese Arten von Überprüfungstests in ein Ereignis im Hauptformular verschieben.
Reihenfolge von Ereignissen bei Tastenanschlägen und Mausklicks
Tastaturereignisse treten für Formulare und Steuerelemente auf, wenn Sie Tasten drücken oder Tastenanschläge senden, solange das Formular oder das Steuerelement den Fokus besitzt. Mausereignisse treten für Formulare, Formularabschnitte und Steuerelemente in Formularen beim Klicken mit den Maustasten auf, während sich der Mauszeiger in einem Formular, Abschnitt oder Steuerelement befindet. Mausereignisse treten auch auf, wenn Sie den Mauszeiger über ein Formular, einen Abschnitt oder ein Steuerelement bewegen.
Tastaturereignisse
Wenn Sie eine Taste drücken und dann loslassen, während ein Steuerelement in einem Formular den Fokus besitzt (oder die SendKeys-Aktion oder -Anweisung zum Senden von Tastenanschlägen verwenden), tritt die folgenden Ereignissequenz auf:
KeyDown KeyPress KeyUp
Wenn Sie eine Taste drücken und loslassen oder eine Tastatureingabe im ANSI-Zeichensatz senden, treten die Ereignisse KeyDown, KeyPress und KeyUp auf. Wenn Sie eine ANSI-Taste drücken und gedrückt halten, wechseln sich die Ereignisse KeyDown und KeyPress wiederholt ab (KeyDown, KeyPress, KeyDown, KeyPress usw.), bis Sie die Taste loslassen. dann tritt das KeyUp-Ereignis auf.
Wenn Sie eine Nicht-ANSI-Taste drücken und loslassen, treten die Ereignisse KeyDown und KeyUp auf. Wenn Sie eine Nicht-ANSI-Taste drücken und gedrückt halten, tritt das KeyDown-Ereignis wiederholt auf, bis Sie die Taste loslassen, und dann tritt das KeyUp-Ereignis auf.
Wenn ein weiteres Ereignis für ein Steuerelement durch das Drücken einer Taste ausgelöst wird, tritt dieses Ereignis nach dem KeyPress-Ereignis auf, aber vor dem KeyUp-Ereignis. Wenn ein Tastenanschlag z. B. Text in einem Textfeld ändert und damit ein Change-Ereignis auslöst, tritt die folgende Ereignissequenz auf:
KeyDown KeyPress Change KeyUp
Wenn ein Tastenanschlag bewirkt, dass der Fokus von einem Steuerelement auf ein anderes Steuerelement verschoben wird, tritt das KeyDown-Ereignis für das erste Steuerelement auf, wohingegen die KeyPress- und KeyUp-Ereignisse für das zweite Steuerelement auftreten. Wenn Sie z. B. Daten in einem Steuerelement ändern und dann die TAB-TASTE drücken, um zum nächsten Steuerelement zu gelangen, tritt die folgende Ereignissequenz auf:
-
Erstes Steuerelement:
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
Zweites Steuerelement:
Geben Sie GotFocus KeyPress KeyUp ein.
Mausereignisse
Wenn Sie mit einer Maustaste klicken und diese dann loslassen, während sich der Mauszeiger auf einem Steuerelement in einem Formular befindet, tritt die folgende Ereignissequenz für das Steuerelement auf:
MouseDown MouseUp Click
Wenn ein Steuerelement den Fokus besitzt und Sie auf ein anderes Steuerelement klicken, um den Fokus auf dieses zweite Steuerelement zu verschieben, tritt die folgende Ereignissequenz auf:
-
Erstes Steuerelement:
Beenden LostFocus
-
Zweites Steuerelement:
Geben Sie GotFocus MouseDown MouseUp Click ein.
Wenn Sie zu einem anderen Datensatz wechseln und dann auf ein Steuerelement klicken, tritt das Current-Ereignis für das Formular auch vor dem Enter-Ereignis für das Steuerelement auf.
Durch Doppelklicken auf ein Steuerelement treten die Click- und DblClick-Ereignisse auf. Wenn Sie z. B. auf ein anderes Steuerelement als eine Befehlsschaltfläche doppelklicken, tritt die folgende Ereignissequenz für das Steuerelement auf:
MouseD own MouseUp Click DblClick MouseUp
Wenn Sie auf eine Befehlsschaltfläche doppelklicken, tritt die vorherige Abfolge von Ereignissen auf, gefolgt von einem zweiten Click-Ereignis.
Das MouseMove-Ereignis für ein Formular, einen Abschnitt oder ein Steuerelement tritt auf, wenn Sie den Mauszeiger über das Formular, den Abschnitt oder das Steuerelement bewegen. Dieses Ereignis ist von den anderen Mausereignissen unabhängig.
Reihenfolge von Ereignissen für Berichte und Berichtsabschnitte
Ereignisse treten für Berichte und Berichtsabschnitte beim Öffnen eines Berichts zum Drucken oder Anzeigen einer Vorschau bzw. beim Schließen eines Berichts auf.
Ereignisse für Berichte
Wenn Sie einen Berichts zum Drucken oder Anzeigen einer Vorschau öffnen und später schließen oder auf eine andere Objektregisterkarte in Access verschieben, tritt die folgende Ereignissequenz für den Bericht auf:
Öffnen Aktivieren Schließen Deaktivieren
Wenn Sie zwischen zwei geöffneten Berichten wechseln, tritt das Deactivate-Ereignis für den ersten Bericht und das Activate-Ereignis für den zweiten Bericht auf:
Deaktivieren (report1) Activate (report2)
Das Deactivate-Ereignis für einen Bericht tritt auch auf, wenn Sie aus dem Bericht zu einer anderen Objektregisterkarte in Access wechseln. Allerdings tritt das Deactivate-Ereignis nicht auf, wenn Sie zu einem Dialogfeld, zu einem Formular, dessen PopUp-Eigenschaft auf Yes festgelegt ist, oder zu einem Fenster in einem anderen Programm wechseln.
Wenn Sie einen Bericht öffnen, der auf einer Abfrage basiert, löst Access das Open-Ereignis für den Bericht aus, bevor die zugrunde liegende Abfrage ausgeführt wird. Daher können Sie die Kriterien für den Bericht festlegen, indem Sie ein Makro oder eine Ereignisprozedur verwenden, die auf das Open-Ereignis reagiert. Beispielsweise kann das Makro oder die Ereignisprozedur ein benutzerdefiniertes Dialogfeld öffnen, in dem Sie Berichtskriterien eingeben.
Ereignisse für Berichtsabschnitte
Wenn Sie einen Bericht drucken oder eine Vorschau anzeigen, treten die Format- und Print-Ereignisse für die Berichtsabschnitte nach den Open- und Activate-Ereignissen für den Bericht und vor den Close- oder Deactivate-Ereignissen für den Bericht auf:
Öffnen (Bericht) Aktivieren (Bericht) Format (Berichtsabschnitt) Drucken (Berichtsabschnitt) Schließen (Bericht) Deaktivieren (Bericht)
Sicherheit Sie können die Berichtsansicht verwenden, um die Benutzerfilterung von Berichten zu ermöglichen. Im Gegensatz zur Seitenansicht treten die Ereignisse Format und Print in keinem Abschnitt in der Berichtsansicht auf. Dies gilt auch für VBA-Funktionsergebnisse und benutzerdefinierte Prozeduren, die in Steuerelementen (z. B. Bezeichnungsbeschriftungen, Anzeige status, bedingte Formatierung, Ändern der Größe von Steuerelementen usw.) innerhalb dieser Ereignisse angezeigt werden. Verwenden Sie daher in diesem Ereignis keinen Code zum Formatieren, Ausblenden oder Drucken vertraulicher Daten, die möglicherweise verfügbar gemacht werden. Es wird empfohlen, die Daten vorab zu filtern oder die Berichtsvorschau zu deaktivieren, indem Sie die AllowReportView-Eigenschaft auf Nein festlegen.
Darüber hinaus können die folgenden Ereignisse während oder nach der Formatierung, aber vor dem Print-Ereignis auftreten:
-
Das Retreat-Ereignis tritt auf, wenn Access während der Formatierung des Berichts zu einem vorherigen Abschnitt zurückkehrt.
-
Das NoData-Ereignis tritt auf, wenn vom Bericht keine Datensätze angezeigt werden.
-
Das Page-Ereignis tritt nach dem Formatieren, aber vor dem Drucken auf. Sie können dieses Ereignis zum Anpassen des Aussehens des gedruckten Berichts verwenden.