Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
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

Event beim Schließen der Mappe

Event beim Schließen der Mappe
26.03.2015 21:53:28
Arceus
Hallo Leute,
ich habe eine Excel Arbeitsmappe, die beim Start durch Workbook_Open mit SaveSetting Standardwerte in die Registry schreibt. Während der Arbeit in der Mappe können diese Werte sich ändern. Beim Schließen will ich dann, um die Registry sauber zu halten, alle Einträge mit DeleteSetting wieder löschen. (Beim Start werden sie ja eh wieder eingetragen.)
So weit so gut, aber leider scheint es fürs Schließen nur Workbook_BeforeClose zu geben und dieses Event läuft, noch bevor der Nutzer gefragt wird, ob er Änderungen speichern will. Drückt dieser dann nämlich auf Abbrechen, will ich weder, dass die Einträge gelöscht sind, noch dass sie wieder auf Standard stehen. Sondern ich will die aktuellen Werte behalten, ganz im Sinne von "Abbrechen".
Wie kann ich das erreichen?

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Event beim Schließen der Mappe
26.03.2015 23:27:00
Martin
Hallo Arceus,
mach doch einfach deine eigene Abfrage, ob Änderungen gespeichert werden sollen:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim vbResult As VbMsgBoxResult
With ThisWorkbook
vbResult = MsgBox("Änderungen in '" & .Name & "' speichern?", vbExclamation +  _
vbYesNoCancel)
If vbResult = vbCancel Then
Cancel = True
Exit Sub
ElseIf vbResult = vbYes Then
.Save
'Hier dein SaveSetting ergänzen
Else
.Saved = True 'sonst Excel Speichern-Abfrage
End If
End With
End Sub
Viele Grüße
Martin

AW: Event beim Schließen der Mappe
27.03.2015 00:15:34
Arceus
Hallo Martin,
ok, das kann man machen. Aber dann schaut die MsgBox fürs Nachfragen so altbacken aus und passt nicht zum übrigen Stil von Excel 2013. Und wenn mans auf einem englischen Betriebssystem verwendet, ist die Abfrage trotzdem auf deutsch. Gefällt mir irgendwie nicht, aber ich fürchte, es gibt keine andere Lösung für das Rätsel.
Oder hat noch jemand eine Idee?
Ich hatte ja noch an einen zeitverzögerten Makroaufruf gedacht, der sich erst aktiviert, nachdem der Nutzer seine Wahl getroffen hat. Hat er abgebrochen, wird SaveSetting ausgeführt, hat er die Mappe geschlossen, wird das Makro ignoriert. Das klappt aber leider nur, wenn dabei das gesamte Excel zu gemacht wird. Sonst öffnet der Hund die Mappe einfach wieder, um das Makro zu starten!! Jaja, für jede Lösung gibt es ein Problem.

Anzeige
AW: Event beim Schließen der Mappe
27.03.2015 09:17:38
Martin
Hallo Arceus,
mit der Optik befasse ich mich jetzt nicht, die sehe ich nicht als "das" Problem an. Was die Sprache angeht, kannst du die Texte für die betreffenden Landessprachen anpassen:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim strSaveChances As String
Dim vbResult As VbMsgBoxResult
'Sprachen:
'https://msdn.microsoft.com/en-us/library/aa432635%28v=office.12%29.aspx
Select Case Application.LanguageSettings.LanguageID(msoLanguageIDUI)
Case msoLanguageIDGerman '1031
strSaveChances = "Änderungen in '" & ThisWorkbook.Name & "' speichern?"
Case msoLanguageIDEnglishUS, msoLanguageIDEnglishUK '1033, 2057
strSaveChances = "Save Changes in '" & ThisWorkbook.Name & "'?"
End Select
vbResult = MsgBox(strSaveChances, vbExclamation + vbYesNoCancel)
If vbResult = vbCancel Then
Cancel = True
Exit Sub
ElseIf vbResult = vbYes Then
ThisWorkbook.Save
'Hier dein SaveSetting ergänzen
Else
ThisWorkbook.Saved = True 'sonst Excel Speichern-Abfrage
End If
End Sub
Viele Grüße
Martin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige