Application.EnableEvents wieder aktivieren in Excel VBA
Schritt-für-Schritt-Anleitung
Um Application.EnableEvents
in Excel VBA wieder zu aktivieren, kannst Du folgenden Vorgehensweise befolgen:
-
Öffne den Visual Basic for Applications (VBA) Editor:
- Drücke
ALT + F11
, um den Editor zu öffnen.
-
Erstelle ein neues Modul:
- Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)" und wähle "Einfügen" > "Modul".
-
Füge den folgenden Code ein:
Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = False
Application.EnableEvents = False
Call BereicheDefinieren
Call xSpeichern
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
-
Kreiere eine Funktion, um das Schließen zu steuern:
Sub XNichtSpeichern()
Dim wbkThis As Excel.Workbook
Set wbkThis = ThisWorkbook
Application.DisplayAlerts = False
Application.EnableEvents = False
wbkThis.Close False
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
-
Starte das Makro:
- Führe das
XNichtSpeichern
-Makro aus, um die Datei zu schließen, ohne das Workbook_BeforeClose
-Event auszulösen.
Häufige Fehler und Lösungen
Alternative Methoden
Eine andere Möglichkeit, EnableEvents
zu steuern, ist das Setzen einer globalen Variable. Beispiel:
Public blNichtspeichern As Boolean
Sub Workbook_BeforeClose(Cancel As Boolean)
If blNichtspeichern = False Then
Application.DisplayAlerts = False
Application.EnableEvents = False
Call BereicheDefinieren
Call xSpeichern
Application.DisplayAlerts = True
Application.EnableEvents = True
End If
End Sub
Hierbei wird die globale Variable blNichtspeichern
verwendet, um zu entscheiden, ob das Event ausgeführt werden soll oder nicht.
Praktische Beispiele
Wenn Du ein Workbook hast, das nicht gespeichert werden soll, kannst Du diesen Code verwenden:
Sub XNichtSpeichern()
blNichtspeichern = True
ThisWorkbook.Saved = True
ThisWorkbook.Close
End Sub
Dies sorgt dafür, dass Excel die Änderungen nicht speichert und das Workbook schließt, ohne das Workbook_BeforeClose
Event auszulösen.
Tipps für Profis
- Nutze
Application.EnableEvents = False
sparsam, um unerwartete Verhaltensweisen in anderen Makros zu vermeiden.
- Denke daran, immer
Application.EnableEvents = True
zurückzusetzen, damit andere Events in Excel wieder funktionieren.
- Berücksichtige, dass das Deaktivieren von Events auch Auswirkungen auf andere laufende Makros haben kann.
FAQ: Häufige Fragen
1. Was bewirkt Application.EnableEvents = False
?
Es deaktiviert alle Ereignisse in Excel, sodass z.B. kein Workbook_BeforeClose
Event ausgelöst wird.
2. Wie setze ich Application.EnableEvents
wieder auf True
?
Füge einfach die Zeile Application.EnableEvents = True
in Dein Makro ein, nachdem Du die gewünschten Aktionen durchgeführt hast.
3. Kann ich Application.EnableEvents
ohne ein Makro aktivieren?
Nein, diese Funktionalität ist nur über VBA-Makros steuerbar.