AW: BeforeClose Fenster Änderungen speichern
20.08.2010 06:49:39
Dirk
Vielen Dank an euch beide!!!
durch eure Hinweise habe ich den Code nun so umgebastelt, dass er funzt. Ich musste noch die Variable booCancel As Boolean global deklarieren und folgendes in den Code einfügen.
booCancel = True
Call SheetsVisible
ThisWorkbook.Sheets("Warnung!").Activate
Call SheetsHidden
Nun läuft alles so, wie ich es mir vorgestellt habe!!!!!!!
Hier der komplette Code:
Dim booCancel As Boolean
Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Antwort
Antwort = MsgBox("Änderungen beim Schließen speichern?", _
vbYesNoCancel, "Datei Schließen")
Select Case Antwort
Case vbNo:
ThisWorkbook.Saved = True
Case vbYes:
Application.CellDragAndDrop = True
'hier werden in der Originaldatei Menüeintragungen wieder hergestellt
booCancel = True
Call SheetsVisible
ThisWorkbook.Sheets("Warnung!").Activate
Call SheetsHidden
ThisWorkbook.Save
ThisWorkbook.Saved = True
Case Else: Cancel = True
End Select
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.ScreenUpdating = False
Call SheetsVisible
ThisWorkbook.Sheets("Warnung!").Activate
Call SheetsHidden
If Not booCancel Then
booCancel = True
If SaveAsUI Then 'wurde speichern unter gewählt?
Application.Dialogs(xlDialogSaveAs).Show
Else
Me.Save
End If
'Dein Makro nach speichern
Call SheetsVisible
ThisWorkbook.Sheets("Zu- und Abgänge").Activate
Call SheetsHidden
booCancel = False
End If
If Not booCancel Then Cancel = True: SaveAsUI = False 'speichern abbrechen
Application.ScreenUpdating = True
End Sub
Private Sub SheetsHidden()
ThisWorkbook.Unprotect ("pia")
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
If wks.Name ActiveSheet.Name Then
wks.Visible = xlVeryHidden
End If
Next wks
ThisWorkbook.Protect ("pia")
End Sub
Private Sub SheetsVisible()
ThisWorkbook.Unprotect ("pia")
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
wks.Visible = True
Next wks
ThisWorkbook.Protect ("pia")
End Sub
Private Sub Workbook_Open()
Application.CellDragAndDrop = False
Call SheetsVisible
ThisWorkbook.Sheets("Zu- und Abgänge").Activate
Call SheetsHidden
End Sub
Vielen Dank
Gruß
Dirk