Before-Close-Anweisung

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
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

Beiträge aus den Excel-Beispielen zum Thema "wenn dann Formel"