ich stand heute vor dem Problem, daß ich in dem BeforeSave-Event mehrere Buttons versteckt habe und sie nach dem Speichern aber wieder automatisch angezeigt bekommen wollte.
Also habe ich hier im Forum und Archiv nachgeschaut und mußte feststellen, daß das zwar schon wiederholt gesucht wurde, aber noch keiner eine Lösung hat.
Gerne hätte ich auf den Beitrag im Archiv geantwortet, da das aber nicht geht, schreibe ich hier einfach meine Lösung hin.
Zunächst benötigt man eine Public-Variable, die verhindert, daß man sich selbstblockiert, da beim manuellen Speichern-Aufruf natürlich wieder das BeforeSave-Event ausgelöst wird.
Anschließend verwendet man (zum Staunen Aller) das BeforeSave-Event, um das SaveAfter zu bewirken.
Public boIsSaving As Boolean ' verhindert das Selbstblockieren
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not boIsSaving Then ' teste internen Marker
HideButtons ' Aktion, die bei JEDEM Speichern (auch "Speichern unter")
' durchgeführt wird
If Not SaveAsUI Then ' SaveAsUI=true, wenn "Speichern unter" aufgerufen wurde - hierfür
' wäre mehr Aufwand notwendig, um dieses auch noch zu unterstützen
DoSomething ' Aktion, die NICHT bei "Speichern unter" ausgeführt wird
Cancel = True ' verhindert, das Excel NACH dem Durchlauf von BeforeSave speichert
boIsSaving = True ' internen Marker setzen, daß aktuell die Speicherung läuft
ThisWorkbook.Save ' Speichern manuell durchführen
boIsSaving = False ' internen Marker zurücksetzen, damit nächste Speicherung auch
' noch so funktioniert
ShowButtons ' die gewünschte Aktion, die NACH dem Speichern ausgeführt wird
End If ' Not SaveAsUI
End If ' Not boIsSaving
End Sub
Ich hoffe, daß damit viele die nach einer solchen Lösung suchen, etwas anfangen können und meine Kommentare ausreichend für das Verständnis sind.
Also einfach nur die 3 Einträge "HideButtons", "DoSomething" und "ShowButtons" gegen die eigenen Aktionen ersetzen.
--
Mit freundlichen Grüßen
HaJoLu