Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Workbook schließen mit Klick auf eingeblendetes Bild

Forumthread: Workbook schließen mit Klick auf eingeblendetes Bild

Workbook schließen mit Klick auf eingeblendetes Bild
22.07.2025 21:50:34
Soham235
Hi,

folgende Problemstellung: Ich möchte, dass Excel mit einem eingeblendeten Bild beendet wird. Das Bild sollte ausgeblendet und damit auch gleichzeitig Excel beendet werden, sobald man mit der Maus darauf geklickt hat. Bis jetzt ließ sich das Bild nur mit Application.Wait vor dem endgültigen Schließen "halten":

Private Sub Workbook_BeforeClose()
Dim shp As Shape
Application.ScreenUpdating = False
Set shp = ThisWorkbook.Sheets("Tabelle1").Shapes("Grafik 1")
shp.visible = True
ThisWorkbook.Sheets("Tabelle1").Shapes("Grafik 1").visible = True
Application.ScreenUpdating = True
Application.Wait Now + TimeSerial(0, 0, 6)
ThisWorkbook.Sheets("Tabelle1").Shapes("Grafik 1").visible = False
End sub

Mit anderen Worten also: Ist es möglich, "Application.Wait" durch einen Mausklick auszutauschen, und wenn ja, wie müsste ich dabei vorgehen?

Grüße
Alex
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook schließen mit Klick auf eingeblendetes Bild
22.07.2025 22:42:23
xlKing
Hi Alex,
zunächst mal ist dein Sub-Aufruf unvollständig. Da fehlt der Cancel Parameter. Wenn du Excel ausschließlich über das Bild beenden willst und nicht z.B. über das Kreuzchen oben rechts im Fenster dann ist BeforeClose schon erstmal die richtige Wahl. In dem Fall musst du nur Cancel auf True setzen und das Schließen wird abgebrochen.

Der Code muss in das Modul "DieseArbeitsmappe"

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim shp As Shape
Application.ScreenUpdating = False
Set shp = ThisWorkbook.Sheets("Tabelle1").Shapes("Grafik 1")
shp.Visible = True
ThisWorkbook.Sheets("Tabelle1").Shapes("Grafik 1").Visible = True
Application.ScreenUpdating = True
Cancel = True
End Sub


Um nun Excel per Klick auf das Bild zu beenden, musst du diesem ein anderes Makro zuweisen. Der Code dafür kommt in ein allgemeines Modul.

Sub Beenden()


sav = ThisWorkbook.Saved
ThisWorkbook.Sheets("Tabelle1").Shapes("Grafik 1").Visible = False
ThisWorkbook.Saved = sav
Application.Quit

End Sub


Habe ich dich soweit richtig verstanden? Deine Angaben waren etwas vage.

Gruß Mr. K.


Anzeige
AW: Workbook schließen mit Klick auf eingeblendetes Bild
22.07.2025 23:02:51
Soham235
Hi Mr. K,

nö, sorry, soweit nicht richtig verstanden. Das eingeblendete Bild ist bereits Teil der Excel-Schließen-Prozedur, die sowohl über einen Button als auch über einen Klick auf das Kreuzchen rechts oben im Fenster erfolgreich initiiert werden kann. Das Bild wird dann nach diversen Subs (innerhalb Workbook_BeforeClose), zB Nachfrage ob man nochmals speichern möchte, ganz am Ende eingeblendet. Nach den im Makro angegebenen 6 Sekunden Wartezeit (Application.Wait) ist Excel dann endgültig geschlossen.

Ich wollte nur wissen, ob man anstatt der Wartezeit (denn Application.Wait hält ja soweit ich weiß alle Prozesse, also selbst Application.Quit, auf) von 6 Sekunden das Bild so lange "stehen lassen" kann, bis ein Mausklick und/oder eine Tasteneingabe erfolgt.

Grüße
Alex
Anzeige
AW: Workbook schließen mit Klick auf eingeblendetes Bild
22.07.2025 23:24:34
xlKing
Hi Alex,

einigen wir uns auf "zur Hälfte richtig verstanden" :-) Denn mit meinem Code passiert genau das. Durch Abbrechen der Schließen-Prozedur bleibt das Bild solange stehen, bis du drauf klickst.

Wenn du aber die Prozedur nicht abbrechen willst, gibts auch Möglichkeiten. Eine nicht ganz so saubere wäre die hier. Nimm eine Globale Variable in einem Allgemeinen Modul zu Hilfe. Solange diese False ist bleibt das Bild bestehen. Klickt man drauf wird sie auf True gesetzt und es geht weiter.

In "DieseArbeitsmappe"
Private Sub Workbook_BeforeClose(Cancel As Boolean)


Dim shp As Shape, start As Single
Application.ScreenUpdating = False
Set shp = ThisWorkbook.Sheets("Tabelle1").Shapes("Grafik 1")
shp.Visible = True
Application.ScreenUpdating = True
start = Timer
Do
DoEvents
Loop Until Weiter = True Or Timer > start + 6

End Sub


Im allgemeinen Modul
Public Weiter As Boolean

Sub Beenden()
Weiter = True
End Sub


Damit der Code nicht unendlich lange durchläuft, kannst du zusätzlich noch einen Timeout setzen, nachdem trotzdem geschlossen wird. Hier bei 6 Sekunden.

Gruß Mr. K.

Anzeige
AW: Workbook schließen mit Klick auf eingeblendetes Bild
23.07.2025 00:51:04
Soham235
Hi Mr. K.,

jetzt haben wir uns vollkommen verstanden :) Jetzt funzt es richtig gut.
Deine "nicht ganz so saubere Lösung" mit der Kombination aus begrenztem Zeitcode mit jederzeitiger Abbruchmöglichkeit ist sogar besser als ich mir erwartet habe. Danke dir! Hab wieder etwas hinzulernen können.

Grüße
Alex
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18