VBA hilft im Büroalltag viele wiederkehrende Funktionen zu automatisieren oder zumindest ein paar langwierige Klicks einzusparen. Dabei ist manchmal auch eine Benutzerinteraktion über ein entsprechenden Formular oder Dialog erforderlich.
Hat man im VBA-Editor von Microsoft Office ein Formular oder Benutzerdialog erstellt, so gehört es zum guten Ton, dass es auch einen Schließen-Button oder Abbrechen-Button gibt, um das Formular ohne weitere Benutzerinteraktion wieder auszublenden.
Das folgende Bild zeigt ein Beispiel für ein solches Formular in der Entwurfsansicht.
Formular schließen mit Unload Me
Damit ein solches Formular geschlossen werden kann, muss natürlich erstmal das Formular angezeigt werden. Den Code für das Schließen des Formulars kann man dann mit einem Doppelklick auf den Schließen-Button zum Erzeugen des Click-Events generieren. Der Schließen-Button hat in diesem Fall den Namen “btnClose” und daraus wird dann automatisch das Ereignis “btnClose_Click()” erzeugt.
Private Sub btnClose_Click()
Unload Me
End Sub
Dort fügt man den Aufruf Unload Me ein. Das Me ist die Referenz auf das Formular selbst. In anderen Programmiersprachen, wird hier oft this verwendet. Man kann Me auch durch den jeweiligen Formularnamen ersetzen. Das benötigt man, wenn man das Formular nicht aus dem eigenen Formular-Code heraus schließen möchte, sondern zum Beispiel aus einem anderen Makro-Modul heraus.
Hinweis: Von der Formular-Entwurfsansicht gelangt man zum Formular-Code auch mit dem HotKey/ShortCut F7 oder über das Menü “Ansicht => Code“.
DoCmd.Close führt zu Laufzeitfehler ‘424’
In vielen Foren wird empfohlen, das Formular über den Befehl DoCmd.Close zu schließen. Das funktionierte bei mir nicht in den gängigen Office-Anwendungen und führte zum Laufzeitfehler:
Laufzeitfehler '424': Objekt erforderlich