ThisWorkbook.close in Excel VBA effektiv nutzen
Schritt-für-Schritt-Anleitung
Um das ThisWorkbook.Close-Kommando in VBA zu verwenden, befolge diese Schritte:
-
Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
-
Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf VBAProject (dein Arbeitsmappenname) und wähle Einfügen > Modul.
-
Füge den folgenden Code ein:
Sub SchliessenWorkbook()
If ThisWorkbook.Saved = False Then
Auswahl = MsgBox("Möchten Sie die Änderungen speichern?", vbYesNoCancel)
Select Case Auswahl
Case vbYes
ThisWorkbook.Save
ThisWorkbook.Close savechanges:=False
Case vbNo
ThisWorkbook.Close savechanges:=False
Case vbCancel
' Abbrechen, mache nichts
End Select
Else
ThisWorkbook.Close
End If
End Sub
-
Weise diesen Code einem Button zu: Gehe zurück zu Excel, füge einen Button ein und wähle das Makro SchliessenWorkbook aus.
Häufige Fehler und Lösungen
-
Fehler beim Schließen ohne Abfragen: Wenn Du Application.DisplayAlerts = False verwendest, um die Abfrage zu umgehen, stelle sicher, dass Du es direkt vor dem Schließen des Workbooks setzt. Beispiel:
Application.DisplayAlerts = False
ThisWorkbook.Close
Application.DisplayAlerts = True
-
CommandBars bleiben sichtbar: Wenn nach dem Schließen die CommandBars sichtbar bleiben, stelle sicher, dass Du die entsprechenden Methoden zum Ausblenden beim Workbook_BeforeClose-Ereignis aufrufst.
Alternative Methoden
Eine alternative Methode, um das Workbook zu schließen, könnte die Verwendung des activeworkbook.close-Befehls sein. Hier ist ein Beispiel:
Sub SchliessenAktivesWorkbook()
activeworkbook.close savechanges:=False
End Sub
Dieser Befehl schließt das aktive Workbook, ohne Änderungen zu speichern.
Praktische Beispiele
Hier sind einige praktische Beispiele, die Du verwenden kannst:
-
Schließen mit Bestätigung:
Sub CloseWithConfirmation()
Dim response As Integer
response = MsgBox("Möchtest Du das Workbook schließen?", vbYesNo)
If response = vbYes Then
ThisWorkbook.Close savechanges:=False
End If
End Sub
-
Speichern und Schließen:
Sub SaveAndCloseWorkbook()
If Not ThisWorkbook.Saved Then
ThisWorkbook.Save
End If
ThisWorkbook.Close
End Sub
Tipps für Profis
-
Verwende ThisWorkbook.Saved = True: Um zu verhindern, dass die Speichermeldung erscheint, setze ThisWorkbook.Saved = True nach dem Speichern.
-
Makros deaktivieren: Du kannst Makros vor dem Schließen deaktivieren, um unerwünschte Aktivitäten zu vermeiden.
-
Code für verschiedene Workbooks: Achte darauf, dass der Code auch für verschiedene Workbooks funktioniert, indem Du ActiveWorkbook oder den spezifischen Workbook-Namen verwendest.
FAQ: Häufige Fragen
1. Wie schließe ich ein Workbook ohne Speichern?
Um ein Workbook ohne Speichern zu schließen, verwende den Befehl:
ThisWorkbook.Close savechanges:=False
2. Wie kann ich die Warnung beim Schließen unterdrücken?
Setze Application.DisplayAlerts = False vor dem Schließen und stelle sicher, dass Du es nach dem Schließen wieder auf True setzt.
3. Was passiert, wenn ich ThisWorkbook.Close benutze?
Der Befehl ThisWorkbook.Close schließt das aktuelle Workbook und fragt, ob Änderungen gespeichert werden sollen, es sei denn, Du hast das Verhalten mit savechanges:=False definiert.
4. Wie kann ich die CommandBars wieder einblenden?
Nutze das Ereignis Workbook_Deactivate, um die CommandBars wieder einzublenden, nachdem das Workbook geschlossen wurde.