Richtige VBA code zum schließen der Arbeitsmappe ohne zu speichern
Wenn der code ausgeführt wird, während mehrere Arbeitsmappen geöffnet sind, das Büro reagiert mit einer Meldung, die
Microsoft Office Excel funktioniert nicht mehr
Windows kann versuchen, die Wiederherstellung Ihrer Daten und starten das Programm neu.
Was ist falsch an dem code? Ich verwende MS Office 2007 auf 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
- Dieser code würde nicht kompilieren. Sie haben gehalten ein sub in einem anderen sub.Es sollte Ihnen ~Kompilierungsfehler~ ~Invalid outside procedure~. Wenn du zwei subs korrekte Praxis ist der Aufruf einer sub aus einer anderen.
- Korrigiert den code.. ich Ruf die close_without_saving sub Workbook_BeforeClose
- Was ist der Zweck dieser routine? Möchten Sie die Arbeitsmappe schließen, ohne die Einarbeitung von änderungen. Anschließend können Sie code wie dieser in der Arbeitsmappe Modul ~Sub Auto_Close() ThisWorkbook.Saved = True End Sub~
- Ich will schließen Sie diese Arbeitsmappe mit der schließen-Schaltfläche "X", ohne änderungen zu speichern, während Sie nicht auf andere Arbeitsblätter geöffnet.
- Sie können auch diese für die Arbeitsmappe schließen, ohne änderungen zu speichern. ~Sub CloseBook2() ActiveWorkbook.Close savechanges:=False End Sub~ Diese routine zugeordnet werden kann, Schließen Sie X-Taste. Arbeitsmappe nie teilweise schließt, wird es immer enger mit allen enthaltenen Arbeitsblätter in dieser Arbeitsmappe.
- Wäre das nicht der
DisplayAlerts = False
verhindern, dass ein popup beim aufrufenThisworkbook.Close()
ohne Argumente? Könnte dies der Grund sein, warum Excel abstürzt? - Z ja, das DisplayAlerts = False und danach True integriert werden können, die in der routine. Das sollte nicht zu einem problem, ~Sub CloseBook () - Anwendung.DisplayAlerts = False ActiveWorkbook.Anwendung Schließen.DisplayAlerts = True End Sub~
- Der richtige Weg ist, wie @skkakkar vorgeschlagen, durch übergabe des Arguments in
Close()
- könnten Sie das beantworten, denn es ist die richtige Antwort auf diese sehr Häufig gestellte Frage?
- sub CloseBook2() löst das problem. Danke. Aber ich verstehe immer noch nicht, was ist falsch mit dem code, den ich verwende.
- Ich weiß es nicht sicher, aber vielleicht ist die DisplayAlerts = False verursacht ein Excel-Problem, wenn Sie versucht, eine Arbeitsmappe, schließen, während andere waren noch offen. Das ist, warum Sie sollten überspringen Sie die DisplayAlerts - Falsch und tun es der richtige Weg.
- Wenn Sie änderungen an Ihrem code, die Arbeitsmappe zu schließen, anstatt das beenden der app, wenn es die einzige Arbeitsmappe würde es Abstürzen, Excel oder würde es zu verlassen Sie mit einem leeren Excel-Instanz? Wenn es nicht abstürzt, dann könnte es Punkt zurück zu dem, was ich eben gesagt habe über die Blockierung der Warnung, wenn mehr als 1 Buch ist offen.
- In Bezug auf deinen code, ich werde in die und versuchen, zu analysieren im detail, was ist Schuld daran, dass Ihr und mein lernen.
- Ich bin froh, dass du bist, weil ich bin jetzt neugierig. Der code sieht aus wie es funktionieren sollte und es könnte sogar sein Isoliertes Problem. Reparatur/Re-Installation von Excel könnte das Problem beheben.
- Dieser code funktioniert wie erwartet mit Excel 2016 auf WIndows 10. Ich habe kein Windows 7 oder Excel 2007. Sie sollten testen Sie Ihren code auf anderen Maschinen auch.
- Ihr korrigiertes Programm funktioniert gut auf meine Excel-2016
- Dann ist vielleicht seine nur in meinem Rechner. Ich werde reparieren, installieren und prüfen Sie erneut
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, schließen Sie die Arbeitsmappe ohne die Einarbeitung von änderungen. Anschließend können Sie code wie dieser in der Arbeitsmappe Modul ~
Können Sie auch diese für die Arbeitsmappe schließen, ohne änderungen zu speichern.
Diese routine zugeordnet werden kann, Schließen Sie X-Taste. Arbeitsmappe nie teilweise schließt, wird es immer enger mit allen enthaltenen Arbeitsblätter in dieser Arbeitsmappe. DisplayAlerts = False und danach True integriert werden können, die in der routine. Das sollte nicht zu einem problem wie