2016-05-27 5 views
0
zu Speichern

Jedes Mal, wenn der Code ausgeführt wird, während mehrere Arbeitsmappen geöffnet sind, im Büro hält mit einer Nachricht arbeitetProper VBA-Code-Arbeitsmappe zu schließen, ohne

Microsoft Office Excel gestoppt hat Arbeits

Windows-versuchen zu erholen Ihre Informationen und starten Sie das Programm neu.

Was stimmt nicht mit dem Code? Ich verwende MS Office 2007 unter Windows7

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    close_without_saving 
End Sub 

Sub close_without_saving() 
    Application.DisplayAlerts = False 
    ThisWorkbook.Saved = True 

    If Application.Workbooks.Count < 2 Then 
     Application.Quit 
    Else 
     ThisWorkbook.Close 
    End If 
End Sub 
+0

Dieser Code würde nicht kompilieren. Sie haben ein Sub innerhalb eines anderen Subs gehalten. Es sollte Ihnen ~ Kompilierfehler ~ ~ ungültige externe Prozedur ~ geben. Wenn Sie zwei Subs haben, ist es richtig, ein Sub von dem anderen zu nennen. – skkakkar

+0

Korrigiert den Code .. Ich rufe die close_without_saving Sub in Workbook_BeforeClose – ZuriPow

+0

Was ist der Zweck dieser Routine? Möchten Sie die Arbeitsmappe schließen, ohne Änderungen zu übernehmen? Dann können Sie solchen Code im Arbeitsmappenmodul verwenden ~ Sub Auto_Close() ThisWorkbook.Saved = True End Sub ~ – skkakkar

Antwort

0

Wenn Sie die Arbeitsmappe schließen möchten, ohne Änderungen zu integrieren. Dann können Sie Code wie dieses im Arbeitsmappenmodul ~

verwenden Sie können dies auch zum Schließen der Arbeitsmappe verwenden, ohne Änderungen zu speichern.

Sub CloseBook2() 
    ActiveWorkbook.Close savechanges:=False 
End Sub 

Diese Routine kann an Close X Button angehängt werden. Arbeitsmappe wird nie teilweise geschlossen, es schließt immer mit allen Blättern, die in dieser Arbeitsmappe enthalten sind. DisplayAlerts = False und anschließend True kann in die Routine aufgenommen werden. Das sollte kein Problem verursachen wie

Sub CloseBook() 
    Application.DisplayAlerts = False 
    ActiveWorkbook.Close 
    Application.DisplayAlerts = True 
End Sub 
+0

@MichaelZ ZuriPow Programm funktioniert gut auf meinem Excel 2016 – skkakkar

+0

Yep meins auch. Es scheint, dass das Problem für den Computer spezifisch ist und auf anderen Windows 7-Computern mit Excel 2007 getestet werden sollte. –