Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Schließ-Prozedur produziert Fehler
#1
Hallo zusammen...

Eigentlich bin ich mit meiner Dienstplan-Vorlage, dank viel Hilfe, auch von hier, für's Internat fertig. Auch dem Anspruch, computerunerfahrenen Pädagogen das Erstellen von Dienstplänen zu erleichtern/ermöglichen, wird laut Rückmeldungen, die Vorlage ganz gut gerecht.

Aber Probleme mit der Schließ-Prozedur  wollen einfach nicht weichen:

Beim ersten Speichervorgang soll Dateiname und -erweiterung vorgegeben (also aus der xltm eine xlsm-Datei) werden.

Beim BeforeClose-Ereignis funktioniert beim ersten Mal alles wie vorgesehen, klickt man aber auf [Abbrechen] und will die Datei später schließen, ignoriert Excel den Code komplett. Ist eine zweite Excelmappe geöffnet, kann auch eine leere Mappe sein, klappts einwandfrei. Warum auch immer.

Ist die Mappe bereits eine xlsm-Datei und man will schließen, öffnet sich nach dem Klicken auf [Speichern] die "Speichern unter"-Dialogbox. Manchmal braucht Excel ein paar Sekunden, bis es sich dazu entscheidet, manchmal nicht, und neulich hat es sogar einfach gespeichert, wie es ja auch zu erwarten wäre. Nach Klicken auf [Abbrechen] schließt die Datei sogar ohne zu speichern!

Ich bekam schon den Tipp, die Anweisungen klarer zu formulieren, oder, besser noch, einen anderen Ansatz zu wählen. Aber ich bin Laie.

Der Code läuft übrigens anderswo reibungslos. Nicht auf unseren Internatsrechnern. Habe ihn auf mehreren Computern getestet. Immer dasselbe. Wir haben Windows 7 Professional (64 Bit) und Excel 2016 (32 Bit).

Weder sind Ereignis-Makros deaktiviert, noch ist Excel mit irgendwelchen Berechnungen beschäftigt. Habe den Code mit einer ansonsten leeren Mappe am frisch hochgefahrenen Rechner getestet - die Abläufe sind diesselben!

Die Abfrage "If Me.Path = "" Then" bringt übrigens keinen Unterschied. In einer anderen Datei hat das in einer anderen Prozedur den Unterschied gemacht.

Weiß jemand worans liegt oder hat - das wäre natürlich geil - einen Code, der möglicherweise auch bei uns läuft?

Viele Grüße
Uwe
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim bolWeiter As Boolean

   If Me.Saved = False Then
   Select Case MsgBox("Änderungen in " & "'" & Me.Name & "'" & " speichern?", vbYesNoCancel + vbQuestion, Me.Name)
       Case vbYes
           On Error Resume Next
           Application.EnableEvents = False
           If Len(Me.Path) Then
               Me.Save
           Else
               Do
                   bolWeiter = Application.Dialogs(xlDialogSaveAs).Show([H1] & " " & [A1] & " " & Format([D1], "YYYY-MM"), 52)
                   If Not bolWeiter Then
                       bolWeiter = MsgBox("Rückkehr zur Datei nicht möglich." & vbNewLine & _
                       "Ggf. speichern und erneut öffnen!" & vbNewLine & vbNewLine & "Schließen ohne zu speichern?", vbYesNo + vbInformation, Me.Name) = vbYes
                   End If
               Loop Until bolWeiter
               Me.Saved = True
           End If
           Application.EnableEvents = True
           On Error GoTo 0
           Application.Quit
       Case vbNo
           Me.Saved = True
           Application.Quit
       Case Else
           Cancel = True
   End Select
   Else
       Application.Quit
   End If

   Application.EnableAutoComplete = True

End Sub
Antwortento top
#2
Hi,

wird ein Fehler ausgeworfen?
Entferne "On Error Resume Next" und prüfe auf err.number und err.description
gruß
Marco
Antwortento top
#3
Hallöchen,

hast Du irgendwo in einem anderen Code die Standardexcelmeldungen ausgeschalten?
Ansonsten bekommst Du immer zuerst die Standardmeldung und nicht Deine programmierte. Sieht man daran, dass Du einen Speichern-Button vor dem Aufgehen des Speichern-Dialoges hast ... Smile

Wenn Du Abbrechen drückst, egal welches, sollte der Code nicht die Zeilen mit On Error durchlaufen …

Zum Testen kannst Du auch mal als erste Codezeile den Befehl Stop programmieren oder einen Haltepunkt setzen und den Code ab da mit F8 zeilenweise durchgehen.

Speichern unter bekommst Du bei Deinem Code übrigens nur bei einer neuen Mappe. Len(Me.Path) ergibt dann falsch.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#4
Hallo Mase,

es kommt keine Fehlermeldung, in der Sache noch nie! Sonst hätte ich das geschrieben.

Ohne "On Error Resume Next" ergibt keinen Unterschied.


Hallo schauan,

bei mir kommt seit jeher immer zuerst meine Box.

Wie schon beschrieben, habe ich den Code in einer leeren Mappe, die als einzige geöffnet war, am frisch hochgefahrenen Rechner laufen lassen.

Mit F8 läuft der Code in allen Varianten bzw. Abzweigungen ebenfalls so, wie beschrieben.

Speichern unter soll ja nur in einer neuen Mappe, also meiner Vorlage auftauchen. Als .xlsm (also wenn Len(Me.Path) richtig ergibt) soll einfach nur gespeichert werden.


Frage: Der Support für Win 7 endet ja bald. Eigentlich leider. Aber kann ich mir Hoffnungen machen, dass der Code unter Win 10 läuft? Können die Probleme mit dem Code auch mit dem Zusammenspiel mit der Hardware zusammenhängen, mit der Prozessorarchitektur, was weiß ich?


Gruß
Uwe
Antwortento top
#5
Aus irgendeinem Grund ist bei Dir Application.EnableEvents auf False gesetzt.
Am besten Du debuggst den Code.
Antwortento top
#6
Hallöchen
Wegen W10 brauchst du dir keine Sorgen zu machen. Problematisch könnte ein Versionswechsel von Office werden und vor allem, falls absichtlich oder versehentlich auf 64 bit Office gewechselt wird. Sollte den hier geposteten Code nicht betreffen.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#7
Moin,

programmiere zum Test mal vor dieser Zeile
Application.EnableEvents = True
und vor
End Sub
einen Stop oder setze dort einen Haltepunkt.

Dann drückst Du bei "Speichern Unter" Abbrechen und schaust, ob der Code dort irgendwo ankommt Sad
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste