Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

BeforeClose Fenster Änderungen speichern

BeforeClose Fenster Änderungen speichern
Dirk
Hallo Excelgemeinde,
ich habe Probleme mit einer Datei, schaffe es nicht dieses selbst zu lösen und bitte um eure Hilfe!!!
Anbei eine Beispielmappe:
https://www.herber.de/bbs/user/71131.xls
Folgendes Problem bekomme ich nicht in den Griff:
Ich hätte gerne, dass sich beim Schließen der Datei eine MsgBox öffnet und man dort entscheidet, ob die Änderungen an der Datei gespeichert werden sollen oder nicht. Dann soll sich die Datei schließen.
Eigentlich funzt das auch soweit ganz gut, aber....
Nach dem Speichervorgang wird noch ein Macro ausgelöst (das soll auch so sein). Das bewirkt allerdings, dass nochmals durch Excel selbst nach dem Speichern gefragt wird. Dies soll allerdings nicht sein!
Denn, dadurch wird in dieser Datei zum Beispiel CellDragandDrop wieder eingeschaltet, wenn man im Dialog auf abbrechen geht. Auch dies soll nicht sein.
Ich hoffe ich habe mich einigermaßen klar ausgedrückt!?!?!?
In der Hoffnung auf Hilfe
Dirk R.
AW: BeforeClose Fenster Änderungen speichern
19.08.2010 10:58:24
JogyB
Hallo Dirk,
ThisWorkbook.Saved = True
Dann kommt die Abfrage von Excel nicht mehr. Das darf natürlich nur gesetzt werden, wenn es wirklich die Ausführung vor dem Beenden ist, dafür ggf. noch eine globale Variable setzen, die Du dann abfragen kannst.
Genauer kann ich gerade nicht beschreiben, da ich hier keine Dateien runterladen und damit auch Deinen Code nicht anschauen kann.
Gruß, Jogy
AW: BeforeClose Fenster Änderungen speichern
19.08.2010 11:27:31
Dirk
Hallo Jogy,
danke für die schnelle Antwort.
ThisWorkbook.Saved = True habe ich auch schon versucht, aber in diesem Fall hat es nicht funktioniert
Gruß, Dirk
AW: BeforeClose Fenster Änderungen speichern
19.08.2010 13:45:33
ChrisL
Hi Dirk
Warum soll das nicht funktionieren?
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
ThisWorkbook.Saved = True
Case Else: Cancel = True
End Select
End Sub
cu
Chris
Anzeige
AW: BeforeClose Fenster Änderungen speichern
19.08.2010 13:52:24
Dirk
Hallo Chris,
wenn ich den Code so ändere werden die Änderungen in der Datei dann nicht gespeichert, obwohl ich in der MsgBox vbYes gewählt habe.
Gruß
Dirk
AW: BeforeClose Fenster Änderungen speichern
19.08.2010 14:03:39
ChrisL
Hi Dirk
Na dann so...
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
ThisWorkbook.Save
ThisWorkbook.Saved = True
Case Else: Cancel = True
End Select
End Sub
cu
Chris
Anzeige
AW: BeforeClose Fenster Änderungen speichern
19.08.2010 14:04:11
JogyB
Da muss auch bei Case vbYes noch ein ThisWorkbook.Save rein.
Gruß, Jogy
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige