Herbers Excel-Forum - das Archiv

Before-Close-Anweisung

Bild

Betrifft: Before-Close-Anweisung
von: Andreas

Geschrieben am: 10.03.2005 14:43:24
Hallo an alle Excel-Profis,
ich kämpfe jetzt schon seit Tagen an einem Problem und komme einfach nicht weiter. Ich habe eine Anwendung (siehe angehängte Beispieldatei), in der eine Befóre_Close-Anweisung durchgeführt wird.
Solange nur diese eine datei geöffnet ist, gibt es auch keinerlei Probleme. Sobald jetzt allerdings eine weitere Datei geöffnet (und gleichzeitig aktiv) ist funktioniert das ganze schon nicht mehr. Das makro läuft eigentlich korrekt bis zur Save-Anweisung - aber das Workbook wird am Ende nicht geschlossen.
Vielen dank im voraus,
Grüße
Andreas
Bild

Betrifft: AW: ...Link zur Datei...
von: Andreas
Geschrieben am: 10.03.2005 14:46:11
sorry hab ich vergessen:
https://www.herber.de/bbs/user/19461.xls
Bild

Betrifft: AW: ...Link zur Datei...
von: Beate Schmitz

Geschrieben am: 10.03.2005 15:45:42
Hallo Andreas,
wie sieht es aus, wenn du deinen Code komplett hierdurch ersetzt?:

Const pwd_wrkbk = ("123")
Const wrkbk = ("test.xls")
Sub workbook_Beforeclose(Cancel As Boolean)
'Standard-Abfrage beim Speichern wird unterdrückt und durch ein separates Dialogfenster abgefragt
Dim Antwort%
Dim Frage As String
Msg = "Möchten Sie die geänderte Datei " & Workbooks(wrkbk).Name & " speichern?"
Select Case MsgBox(Msg, vbInformation + vbYesNoCancel)
Case vbYes:     Call Ja         'Makroaufruf bei Ja
Case vbNo:      Call Nein        'Makroaufruf bei Nein
Case vbCancel:  Cancel = True   'Makroaufruf bei Abbrechen
End Select
End Sub

Sub Ja()
'Dieser Code wird ausgeführt, wenn in der Before_Close_Anweisung 'Ja' gedrückt wird
Workbooks(wrkbk).Activate
If (Workbooks(wrkbk).ActiveSheet.Name = "Einleitung") Then
Workbooks(wrkbk).Unprotect (pwd_wrkbk)
Workbooks(wrkbk).ActiveSheet.Visible = False
Workbooks(wrkbk).Protect Password:=pwd_wrkbk, Structure:=True, Windows:=False
End If
Workbooks(wrkbk).Sheets("Hauptmenu").Select
Workbooks(wrkbk).Sheets("Hauptmenu").Range("C3") = ""
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
Application.CommandBars("Worksheet Menu Bar").Enabled = True
ActiveWindow.DisplayWorkbookTabs = True
Application.CommandBars("Drawing").Visible = True
Me.Save
End Sub

Sub Nein()
'Dieser Code wird ausgeführt, wenn in der Before_Close_Anweisung 'Nein' gedrückt wird
Workbooks(wrkbk).Activate
Workbooks(wrkbk).Sheets("Hauptmenu").Select
Workbooks(wrkbk).Sheets("Hauptmenu").Range("C3") = ""
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
Me.Saved = True
Cancel = False
End Sub

Gruß,
Beate
 Bild