Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
660to664
660to664
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Workbook_BeforeClose abbrechen
04.09.2005 16:42:27
Stephan
Hallo Forum,
Ich habe an eine Arbeitsmappe eine spezifische Commandbar mit spezifischen MenüButtons angefügt. Diese macht nur für die Arbeitsmappe Sinn und soll beim schließen der Arbeitsmappe unsichtbar gemacht werden. Dazu benutze ich das Ereignis Workbook_BeforeClose. Wenn man jetzt das Blatt schließen möchte, bei der anschließenden Nachfrage ob Änderungen gesichert werden sollen? „Ja“, „Nein“, „Abbrechen“ den Vorgang abbricht, so ist meine Commandbar bereits unsichtbar obwohl das Blatt nicht geschlossen wurde. Wie kann man das verhindern?
1) Gibt es ein Ereignis für „close“ das auf das BeforeClose folgt (kann ich nicht finden)
2) Kann ich über eine anderen API Aufruf erfahren, das der Close Vorgang abgebrochen wurde?
3) Gibt es danach ein Reactivate Event irgendwo, in welchem ich die Commandbar wieder sichtbar machen kann. (Die Normalen SheetActivate, WorkbookActivate Events „feuern“ in dieser Situation nicht.
Vielen Dank für eure Unterstützung
Stephan

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook_BeforeClose abbrechen
04.09.2005 17:04:10
Nepumuk
Hallo Stephan,
ist doch kein Problem:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With ThisWorkbook
        If Not .Saved Then
            Select Case MsgBox("Änderungen speichern?", 35, "Abfrage")
                Case 2
                    Cancel = True
                    Exit Sub
                Case 6: .Save
                Case 7: .Saved = True
            End Select
        End If
    End With
    Call prcDeleteCommandBar(True)
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Workbook_BeforeClose abbrechen
04.09.2005 17:22:18
Frank
Vielleicht kannst du mir auch da weiter helfen.
Für Tablets-PC gibt es von Microsoft ein Journal, kann man anstelle von Word, das gleiche mit dem Journal machen?
Danke
AW: Workbook_BeforeClose abbrechen
04.09.2005 17:34:00
Stephan
Ja das ist es! Vielen Dank
Prinzip verstanden. Man muss den Standard-Dialog Nachbilden. Wo da jetzt einmal mein Ehrgeiz geweckt ist:
Private Sub Workbook_BeforeClose(Cancel As Boolean) With ThisWorkbook If Not .Saved Then Select Case MsgBox("Sollen Ihre Änderungen in Mappe " & .Name & " gespeichert Werden?", 51) Case 2 Cancel = True Exit Sub Case 6: .Save Case 7: .Saved = True End Select End If End With Call prcDeleteCommandBar(True) End Sub
... das kommt dem Standard-Dialog am nächsten. Kleine Unterschiede gibts es aber noch.
1. Der Name der Arbeitsmappe ist ohne *.xls" im Standard-Dialog
2. Die Buttons verteilen sich beim Standard-Dialog weiter über die Dialogbox
Ich weiß das ist Erbsenzählerei aber falls dich das auch interessiert, hast du eine Idee wie man diese kleinen Nuancen auch noch "beherrschen" kann.
Viele Grüße
Stephan
Anzeige
AW: Workbook_BeforeClose abbrechen
04.09.2005 17:38:13
Nepumuk
Hallo Stephan,
einzige Möglichkeit: Ein Userform
Gruß
Nepumuk
Excel & VBA – Beispiele
AW: Workbook_BeforeClose abbrechen
04.09.2005 17:44:57
K.Rola
Hallo Nepumuk,
bist ja mal wieder hyperaktiv. Wann kommt die neue DLL?
Wie gehts, Termin schon gewesen?
Gruß K.Rola
AW: Workbook_BeforeClose abbrechen
04.09.2005 18:07:47
Nepumuk
Liebste K.Rola,
am 14. werde ich eingeliefert. Jetzt ist mir nur langweilig.
Mit der neuen DLL ist Peter noch am überlegen, um nicht die Käufer der Jeanie zu verprellen.
Gruß
Nepumuk
AW: Workbook_BeforeClose abbrechen
04.09.2005 17:48:28
Stephan
Das ist ja zu aufwendig für den Zweck. War auch mehr Interesse halber um die Möglichkeiten der MsgBox Funktion komplett zu verstehen.
Aber was den Mappennamen angeht. Mit welcher Stringfunktion wird man am elegantesten das ".xls" aus ThisWorkbook.name los?
Viele Grüße
Stephan
Anzeige
AW: Workbook_BeforeClose abbrechen
04.09.2005 17:53:54
Beate
Hallo Stephan,
zu deinem 1.: ändere deine Zeile mal so ab, sollte dann xls-Endung mitanzeigen (bei mir ist das so):
Select Case MsgBox("Sollen Ihre Änderungen in Mappe " & Me.Name & " gespeichert Werden?", 51)
Gruß,
Beate
AW: Workbook_BeforeClose abbrechen
04.09.2005 18:04:25
Stephan
Hallo Beate,
ich würde ja gerne das ".xls" loswerden, da es im Standarddialog auch nicht vorkommt.Ich habe mich da ein bißchen umständlich ausgedrückt. Das sollte irgendwie mit einer Stringfuntion leicht gehen.
Gruss
Stephan
AW: Workbook_BeforeClose abbrechen
04.09.2005 18:00:02
Beate
Nochmal hallo Stephan,
mein Makro erlaubt speichern ja/nein oder abbrechen - und führt je nachdem nach ein paar Aktionen aus (sind als Kommentar vermerkt). Falls du es testen möchtest, sollte deine Mappe ein Blatt mit Namen "Start" enthalten, derweil es im Makro vorkommt.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'Erzwingen, dass Speichern abgefragt wird
    Msg = "Ja: Geänderte Datei " & Me.Name & " speichern und schliessen" & Chr(10) & "Nein: Datei schliessen ohne zu speichern" & Chr(10) & "Abbrechen: Datei bleibt geöffnet"
    Ans = MsgBox(Msg, vbQuestion + vbYesNoCancel)
    Select Case Ans
        Case vbYes
            Application.ScreenUpdating = False
            Application.Calculation = xlCalculationManual
            Application.EnableEvents = False
            'alle Filter aufheben
            Dim blatt As Worksheet
            For Each blatt In ActiveWorkbook.Worksheets
                blatt.Activate
                If blatt.FilterMode Then blatt.ShowAllData
                'überall zur Zelle = Strg+Pos1 gehen
                Cells(ActiveWindow.ScrollRow, ActiveWindow.ScrollColumn).Select
            Next blatt
            Application.EnableEvents = True
            Application.Calculation = xlCalculationAutomatic
            Application.ScreenUpdating = True
            'sicherstellen, dass beim Dateiöffnen Startblatt aktiv
            Sheets("Start").Select
            Me.Save
        Case vbNo
            Me.Saved = True
            Cancel = False
        Case vbCancel
            Cancel = True
    End Select
End Sub



Gruß,
Beate
Anzeige
AW: Workbook_BeforeClose abbrechen
04.09.2005 18:16:09
Stephan
Hallo Beate,
einige gute Ideen in deinem Code: Startblatt setzen, Autofilter löschen etc. werde ich wohl übernehmen. Kannst du mir nicht zu guter Letzt die "strip String" Lösung liefern (also das ".xls" vom Namen abziehen.
Viele Grüße
Stephan
AW: Workbook_BeforeClose abbrechen
04.09.2005 18:22:04
Nepumuk
Hallo Stephan,
VBA Gut?
Public Sub test()
    MsgBox Left$(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Workbook_BeforeClose abbrechen
04.09.2005 18:32:24
Stephan
Ja, vielen Dank.
Ich weiß was du meinst mit VBA Gut? ;-) und will auch nichts Falsches vorgeben aber ein bißchen grundsätlich programmieren kann ich schon - nur längere Zeit nicht mehr gemacht. Wenn ich "VBA nur Makrorecorder" angeben würde hätte ich die Sorge, das mir Leute gewisse Lösungen nicht erklären würden weil sie dies für zu schwierig hielten. Aber für die ganz Guten gibt es ja noch den "VBA Profi" Status um sich von "Sonntagsprogrammierern" wie mir abzuheben ;-)
Viele Grüße
Stephan

AW: Workbook_BeforeClose abbrechen
04.09.2005 17:40:20
K.Rola
Hallo,
wenn die Commandbar, wie du schreibst, nur in einer Mappe sinnvoll ist, würde ich
sie in Workbook_deactivate verschwinden.
Fruß K.Rola
Anzeige
AW: Workbook_BeforeClose abbrechen
04.09.2005 17:52:51
Stephan
Ja, damit habe mich auch schon beschäftig. Ich habe mich aber entschlossen für den Fall des Wechselns zu einer anderen geöffneten Mappe die Commandbar komplett zu „diablen“ anstatt sie unsichtbar zu machen. Das hält den Bildschirm ruhiger. Erst wenn die Commandbar-Mappe komplett geschlossen wird verschwindet auch die zugehörige Commandbar .
Viele Grüße
Stephan

85 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige