07.06.2019, 17:50
(Dieser Beitrag wurde zuletzt bearbeitet: 07.06.2019, 18:43 von CaptainNemo.)
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
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