Abbruch des Schließens über workbook_beforeclose P
09.08.2016 12:37:15
Oliver
Ich habe ein eigenartiges Problem:
Ich möchte beim Schließen einer Arbeitsmappe den üblichen Dialog zum Speichern und Abbrechen von Excel manuell vorwegnehmen (um eine Reihe von Fehlern zu umgehen, die aufgrund von Active-X Steuerelementen beim Schließen dieser Datei hervorgerufen werden, weil die zugehörigen Ereignisprozeduren komischerweise trotz Einstellung application.enableevents=false beim Schließen ausgeführt werden und scheinbar die Steuerelemente beim Schließen der Arbeitsmappe entladen werden (?!?), so dass die Objekt-Bezüge in den Prozeduren nicht mehr gefunden werden ... aber das ist ein anderes Thema.).
Ich habe hier mal einen vereinfachten Auszug der workbook_beforeclose Prozedur beigelegt, den ich so an einer komplett leeren, neuen Arbeitsmappe getestet habe.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ans As VbMsgBoxResult, SV As Boolean
ans = MsgBox("Speichern?", vbYesNoCancel, "Achtung")
SV = ans = vbYes
Cancel = ans = vbCancel
If SV Then ThisWorkbook.Save
ThisWorkbook.Saved = True
If Not Cancel Then
appplication.DisplayAlerts = False
If Application.Workbooks.Count = 1 Then Application.Quit
ThisWorkbook.Close False
End If
End Sub
Eigentlich sollte doch nun, wenn man bei der Abfrage "Abbrechen" auswählt, das Beenden abgebrochen werden. Hier liegt nun mein Problem. Die Variable "Cancel" wird wie gewünscht auf true gesetzt, aber die Arbeitsmappe schließt sich trotzdem.
Hat jemand dafür eine Erklärung?
(Ich arbeite mit Office 2013 mit Windows 8.1)
Ein weiteres Problem ist, dass hier in der leeren Beispieldatei der Befehl application.quit korrekt funktioniert. In meiner eigentlichen Datei wird aber immer nur die Arbeitsmappe geschlossen und Excel bleibt als leeren Fenster offen. Das kann ich mir auch nicht recht erklären.
Liebe Grüße,
Oliver