Umgang mit dem CloseMode in VBA UserForms
Schritt-für-Schritt-Anleitung
Um die UserForm_QueryClose
-Ereignisprozedur in Excel VBA richtig zu nutzen, befolge diese Schritte:
-
Öffne den VBA-Editor: Drücke ALT + F11
, um den VBA-Editor zu öffnen.
-
Erstelle ein neues UserForm: Klicke auf Einfügen
> UserForm
.
-
Füge die Code-Prozedur hinzu: Klicke doppelt auf das UserForm und füge den folgenden Code ein:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Unload Me
' Hier kannst du zusätzliche Befehle wie das Löschen von Arrays einfügen
Call Arr_Personal_Löschen
If Einzelanfrage Then ThisWorkbook.Close False
End If
End Sub
-
Teste die Schließfunktion: Führe das UserForm aus und schließe es über das Schließkreuz. Achte darauf, dass die letzte Anweisung in der Prozedur ausgeführt wird.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du Probleme mit der UserForm_QueryClose
-Ereignisprozedur hast, kannst du stattdessen die cmd_ESC_Click
-Methode verwenden:
Private Sub cmd_ESC_Click()
Unload Me
Call Arr_Personal_Löschen
If Einzelanfrage Then ThisWorkbook.Close False
End Sub
Diese Methode wird aufgerufen, wenn der Benutzer auf einen bestimmten Button klickt, um das UserForm zu schließen.
Praktische Beispiele
Hier sind einige Beispiele zur Verwendung von UserForm_QueryClose
in einem praktischen Kontext:
-
Abfrage vor dem Schließen: Du kannst eine Bestätigungsabfrage hinzufügen, bevor das UserForm geschlossen wird.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
If MsgBox("Möchten Sie das Formular wirklich schließen?", vbYesNo) = vbNo Then
Cancel = True
End If
End If
End Sub
-
Daten speichern vor dem Schließen: Wenn das UserForm Daten enthält, kannst du sicherstellen, dass diese gespeichert werden, bevor es geschlossen wird:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
' Speichern der Daten
Call DatenSpeichern
End If
End Sub
Tipps für Profis
- Verwendung von
Cancel
: Nutze die Cancel
-Eigenschaft innerhalb des QueryClose
-Ereignisses, um das Schließen des UserForms zu verhindern, wenn bestimmte Bedingungen nicht erfüllt sind.
- Debugging: Verwende
Debug.Print
oder MsgBox
, um den Wert von CloseMode
zu überprüfen, während du dein UserForm testest.
- Event-Handling: Sei dir bewusst, dass das
UserForm_QueryClose
-Ereignis nur ausgeführt wird, wenn das UserForm über das Schließkreuz geschlossen wird.
FAQ: Häufige Fragen
1. Was ist der Unterschied zwischen CloseMode
und Cancel
?
CloseMode
gibt an, wie das UserForm geschlossen wird (z.B. über das Schließkreuz oder per Code), während Cancel
verwendet wird, um den Schließvorgang abzubrechen.
2. Kann ich UserForm_QueryClose
auch für andere Formulare verwenden?
Ja, die UserForm_QueryClose
-Prozedur kann in jedem UserForm verwendet werden, um benutzerdefinierte Schließlogik zu implementieren.
3. Was passiert, wenn ich Unload Me
in UserForm_QueryClose
aufrufe?
Unload Me
entfernt das UserForm aus dem Speicher, was bedeutet, dass alle Variablen, die darin definiert sind, ebenfalls gelöscht werden.