Before-Close-Anweisung

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Before-Close-Anweisung von: Andreas
Geschrieben am: 04.03.2005 07:57:34

Hallo VBA-Profis,

ich habe den folgenden Code in mein Xls-Tool eingebaut und möchte darüber das Schließen der xls-Mappe steuern. Die Case-Anweisung 'Ja' und 'Abbrechen' funktioniert auch einwandfrei. Wenn ich aber das Dialogfeld mit 'Nein' betsätige erscheint nochmals zusätzlich das Microsoft-Dialogfeld Speichern (Ja, Nein ,...).

Kann mir jemand sagen wo der Fehler liegt??

Vielen dank im voraus,
Andreas

-------------------


Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Erzwingen, dass Speichern abgefragt wird
        Msg = "Möchten Sie die geänderte Datei " & Me.Name & " speichern?"
        Ans = MsgBox(Msg, vbQuestion + vbYesNoCancel)
        Select Case Ans
            Case vbYes
                If (Workbooks(Wrkbk).ActiveSheet.Name = "Einleitung" Or Workbooks(Wrkbk).ActiveSheet.Name = "Annahmen" Or Workbooks(Wrkbk).ActiveSheet.Name = "CO-Basisdaten" Or Workbooks(Wrkbk).ActiveSheet.Name = "Bilanz" Or Workbooks(Wrkbk).ActiveSheet.Name = "GuV" Or Workbooks(Wrkbk).ActiveSheet.Name = "Finanzplan" Or Workbooks(Wrkbk).ActiveSheet.Name = "Übersicht-LBZ" Or Workbooks(Wrkbk).ActiveSheet.Name = "Umsatzerlöse" Or Workbooks(Wrkbk).ActiveSheet.Name = "Aufwendungen" Or Workbooks(Wrkbk).ActiveSheet.Name = "AfA" Or Workbooks(Wrkbk).ActiveSheet.Name = "Personal" Or Workbooks(Wrkbk).ActiveSheet.Name = "Nebenrechnung") 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
                Me.Save
            Case vbNo
                Workbooks(Wrkbk).Sheets("Hauptmenu").Select
                Workbooks(Wrkbk).Sheets("Hauptmenu").Range("C3") = ""
                Application.DisplayFormulaBar = True
                Application.DisplayStatusBar = True
                Me.Saved = True
                Cancel = False
            Case vbCancel
                Cancel = True
        End Select
End Sub

Bild


Betrifft: AW: Before-Close-Anweisung von: Andreas
Geschrieben am: 04.03.2005 08:23:53

Zusatz:

Ein erneuter Test hat gezeigt, dass auch bei Bestätigung mit "Ja" ein zusätzliches Dialogfenster angezeigt wird. Wie kann ich das umgehen???????

Grüße,
Andreas


Bild


Betrifft: AW: Before-Close-Anweisung von: Stefan Hillenbrand
Geschrieben am: 04.03.2005 08:40:48

Hallo Andreas,

füge nach End Select ein

ActiveWorkbook.Saved = True

Ein.

Gruß Stefan


Bild


Betrifft: AW: Before-Close-Anweisung von: Andreas
Geschrieben am: 04.03.2005 09:22:10

Hallo Stefan,

vielen dank für deinen Tipp. Jetzt funktioniert es aber allerdings nur wenn diese Datei alleine geöffnet ist. Sobalb mehrere dateien gelichzeitig geöffnet sind kommt es erneut zur doppelten Speichern-Abfrage.

Gruß,
Andreas

P.S.: ich habe sämtliche me.-Anweisungen durch direkte Anweisungen ersetzt [Workbooks(test.xls)] aber auch damit funzt es nicht!


Bild


Betrifft: AW: Before-Close-Anweisung von: Stefan Hillenbrand
Geschrieben am: 04.03.2005 10:34:03

Hallo Andreas,

füge nach dem
ActiveWorkbook.Saved = True

noch ein

Application.Quit

ein. Ich habs jetzt nicht getestet, obs funktioniert.
Wenn nicht, weiß ich auch nicht weiter.

Gruß Stefan


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zahlenformat bei Dateneingabe über UserBox"