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 aufrufen Thisworkbook.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

InformationsquelleAutor ZuriPow | 2016-05-27
Schreibe einen Kommentar