Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Workbook.Close mit Messagebox

Workbook.Close mit Messagebox
07.09.2017 08:13:02
_Domi_
Hallo zusammen,
ich habe folgendes Problem:
beim Schließen meiner Vorlage wird anhand einer Zelle geprüft ob ich das Dokument als Develop gekennzeichnet habe.
Ist dies der Fall erscheint beim Schließen des Workbooks eine Messagebox mit Ja und Nein.
Bei Ja wird das Dokument automatisch als Vorlage unter einem Pfad gespeichert.
Bei Nein soll das Workbook ohne speichern geschlossen werden.
Da dieses Prozedere im Workbook_BeforeClose aufgerufen wird, erscheint die Messagebox beim Drücken auf Nein zweimal, da ich ja mit dem Nein Button das Dokument quasi erneut schließe.
Hier der Code:
If Range("U6") = True Then
Dim Rückgabe As Integer
Rückgabe = MsgBox("Sie beenden das Dokument im Develop Modus?", vbYesNo + vbExclamation, "Beenden")
If Rückgabe = 6 Then Develop_Modus
If Rückgabe = 7 Then ThisWorkbook.Close False
End If
Hat jemand eine Idee wie ich das beheben kann?
Danke und Gruß Domi
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook.Close mit Messagebox
07.09.2017 08:23:28
ChrisL
Hi Domi
Hier ein Vorschlag:

Public bCheck As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If bCheck Then Exit Sub
If Range("U6") = True Then
Dim Rückgabe As Integer
Rückgabe = MsgBox("Sie beenden das Dokument im Develop Modus?", vbYesNo + vbExclamation, " _
Beenden")
If Rückgabe = 6 Then Develop_Modus
Cancel = True
If Rückgabe = 7 Then
bCheck = True
ThisWorkbook.Close False
End If
End If
End Sub
cu
Chris
Anzeige
AW: Workbook.Close mit Messagebox
07.09.2017 09:18:55
_Domi_
Super danke Chris, funktioniert top :)
AW: Workbook.Close mit Messagebox
07.09.2017 08:37:05
UweD
Hallo Domi
2x:
durch das "ThisWorkbook.Close" rufst du ja erneut das "Workbook_BeforeClose"-Event auf.
Das kannst du verhindern, indem du das temporär ausschaltest.
ABER.
Falls nach dem Ausschalten mal ein Fehler auftreten sollte, bleibt das aus.
Deshalb sollte man eine Fehlerbehandlung einbauen und dort auf jeden fall wieder einschalten
und noch ein Tipp: Referenziere immer das Blatt, worauf du zugreifst.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error GoTo Fehler
    Dim WS As Worksheet, Rückgabe As Integer
    Set WS = Sheets("Tabelle1")
    
    If WS.Range("U6") = True Then
        Rückgabe = MsgBox("Sie beenden das Dokument im Develop Modus?", vbYesNo + vbExclamation, "Beenden")
        If Rückgabe = 6 Then Develop_Modus
        If Rückgabe = 7 Then
            Application.EnableEvents = False
            ThisWorkbook.Close False
            
        End If
    End If
    
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
AW: Workbook.Close mit Messagebox
07.09.2017 08:42:28
ChrisL
Hi Uwe
So bleiben die Events ausgeschaltet. Da die Mappe schon zu ist kommt die Zeile zum Wiedereinschalten nicht zum Tragen.
cu
Chris
uupps. stimmt.
07.09.2017 09:09:50
UweD
Da hab ich nicht zu Ende gedacht.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige