Ereignisse in Formularen: öffnen und Schließen

Nachdem Sie im ersten Teil dieser Artikelreihe gelernt haben, wie Sie die Reihenfolge der auftretenden Ereignisse beim öffnen und Schließen von Formularen samt Unterformular ermitteln, schauen wir uns in diesem Teil genauer an, was beim öffnen eines Formulars geschieht und welche Aktionen Sie in den verschiedenen Ereignisprozeduren unterbringen können.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1205_EreignisseInFormularen_2.mdb.

Ereignisse beim öffnen eines Formulars

Schauen wir uns nun im Detail an, was beim öffnen eines Formulars geschieht und was Sie mit den ausgelösten Prozeduren anfangen können.

Das Ereignis Beim öffnen

Dieses Ereignis wird beim öffnen eines Formulars als Erstes ausgelöst. Damit dies geschieht, stellen Sie den Wert der Ereigniseigenschaft Beim öffnen auf den Wert [Ereignisprozedur] ein und klicken auf die Schaltfläche mit den drei Punkten, um die durch das Ereignis ausgelöste Ereignisprozedur anzulegen. Diese sieht zunächst so aus:

Private Sub Form_Open(Cancel As Integer)
End Sub

Es bietet einen Parameter namens Cancel, mit dem sich das öffnen abbrechen lässt, und das ist einer der wesentlichen Unterschiede zum Ereignis Form_Load, das wir gleich vorstellen.

Das Ereignis Beim Laden

Dieses Ereignis wird nach dem Ereignis Form_Open ausgelöst. Der wesentliche Unterschied zwischen beiden Ereignissen ist, dass Sie das öffnen des Formulars im Ereignis Beim öffnen abbrechen können. Außerdem bietet das Form_Load-Ereignis die Möglichkeit, die angezeigten Daten bereits beim Laden per VBA-Code anzupassen.

öffnungsvorgang abbrechen

Wenn Sie den Parameter Cancel auf den Wert True einstellen, wird das Formular gar nicht erst geöffnet – probieren Sie es aus:

Private Sub Form_Open(Cancel As Integer)
     Cancel = True
End Sub

Natürlich macht es keinen Sinn, ein Formular mit einer Prozedur auszustatten, die dieses sofort wieder schließt. Dafür sollte es schon eine entsprechende Bedingung geben – zum Beispiel, dass das Formular keine Daten enthält. Dies lässt sich wie folgt realisieren:

Private Sub Form_Open(Cancel As Integer)
     If Me.Recordset.EOF Then
         MsgBox "Das Formular enthält keine Daten."
         Cancel = True
     End If
End Sub

Das Recordset-Objekt ermöglicht den Zugriff auf die Daten des Formulars. Wenn die Eigenschaft EOF wahr ist, bedeutet dies, dass der Datensatzzeiger sich hinter dem letzten Datensatz befindet, was gleichbedeutend mit einer leeren Datenherkunft ist. In diesem Fall soll eine Meldung erscheinen und der Parameter Cancel auf den Wert True eingestellt werden, damit das Formular nach der Anzeige der Meldung gar nicht erst geöffnet wird.

Access [basics]

Unser exklusives Angebot für Dich!

Access im Unternehmen
7,90 € im Monat*

(Das Abo ist jederzeit monatlich kündbar)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →