ActiveWindow.Close blockiert Unprotect
16.03.2020 09:37:41
Klexy
Ich habe ein seltsames Verhalten entdeckt, zu dem ich weder eine Erklärung noch eine Lösung finden kann.
Die angehängte Musterdatei (Inhalt und Code auf das Minimum reduziert) hat ein Makro Workbook_BeforeClose. Wenn ich die Datei schließe, kommt eine Nachfrage, ob ich was an der Datei geändert habe, was dann in die Versionierungshistorie im Blatt Anleitung geschrieben wird. Bei jedem neuen Tag wird oben in der Versionierungshistorie eine neue Zeile eingefügt. Am gleichen Tag wird die bestehende Datumszeile genommen.
Wenn ich die Datei mit dem X rechts oben schließe, läuft es ganz normal durch.
Wenn ich die Datei aber über den Befehl ActiveWindow.Close schließe, läuft das Workbook_BeforeClose-Makro nicht durch, sondern bleibt hängen, weil die Codezeile [...].Unprotect nicht ausgeführt wird.
Dabei ist es egal ob der Befehl direkt im Makro ist: Sheets(Blatt).Unprotect Password:=Passwort
Oder ob der Befehl in ein eigenes Makro ausgelagert wird: Call Blatt_auf(Blatt, Passwort)
Oder ob die komplette Eintragsprozedur ausgelagert wird: Application.Run "Eintrag_auslagern", Blatt, Passwort, Eintrag, LetztesUpComment
Die verschiedenen Optionen sind (auskommentiert) alle im Code der Musterdatei enthalten.
https://www.herber.de/bbs/user/135883.xls