Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1376to1380
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
Inhaltsverzeichnis

Workbook_BeforeClose

Workbook_BeforeClose
27.08.2014 08:12:05
Ludwig
Hallo Experten
Ichgebe auf, brauche Hilfe! Möchte beim Verlassen des workbooks eine schöne Meldung zeigen. Funktioniert auch solange kein weiteres workbook offen ist. sobald eins offen ist stürzt Excel ab und alles ist dahin! Hat jemand einen guten Rat wo der Fehler liegt?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim TB1 As Worksheet
Dim objWB As Workbook
Dim bolQuit As Boolean
Set TB1 = Worksheets("H-MENÜ")
TB1.Visible = xlSheetVisible
TB1.Activate
ActiveWorkbook.Close False
Dim WsShell                     ' Variable für Copyright
Dim LoI As Long
Set WsShell = CreateObject("WScript.Shell")
LoI = WsShell.Popup("   ...und Tschüss sagt: " _
& "" & vbCrLf & vbCrLf & "            schöne Meldung! " _
& "" & vbCrLf _
& "" & vbCrLf & vbCrLf & vbCrLf _
& Chr(169) & " 2010", 1, "Copyright-Hinweis")
'Unload Me
bolQuit = True
For Each objWB In Application.Workbooks
If objWB.Name  Me.Name Then
'If objWB.Windows(1).Visible = True Then
objWB.Windows(1).Activate
bolQuit = False
Exit For
'End If
End If
Next objWB
If bolQuit = True Then Application.Quit
End Sub
Vielen Dank im Voraus.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook_BeforeClose
27.08.2014 09:14:15
Daniel
Hi
Du darfst im beforeclose-event selbst die Datei nicht schliessen.
Das passiert automatisch nach Ablauf dieses Makros.
Gruß Daniel

AW: Workbook_BeforeClose
27.08.2014 09:57:37
Ludwig
Hi Daniel
Es liegt eindeutig an dem Part
Dim WsShell ' Variable für Copyright
Dim LoI As Long
Set WsShell = CreateObject("WScript.Shell")
LoI = WsShell.Popup(" ...und Tschüss sagt: " _
& "" & vbCrLf & vbCrLf & " schöne Meldung! " _
& "" & vbCrLf _
& "" & vbCrLf & vbCrLf & vbCrLf _
& Chr(169) & " 2010", 1, "Copyright-Hinweis")
Den Rest habe ich rausgeschmissen; ohne Erfolg!
Gruß Ludwig

Anzeige
AW: Workbook_BeforeClose
27.08.2014 09:47:34
fcs
Hallo Ludwig,
die absolute Problemzeile ist hier:
ActiveWorkbook.Close False
Diese Zeile gehört nicht in ein Workbook_BeforeClose-Ereignismakro.
Denn meistens (außer bei makro-gesteuertem Schließen von Dateien) ist die Datei in der Workbook_BeforeClose ausgeführt wird auch die aktive Arbeitsmappe. Somit kommt es zu wiederholtem Start des Ereignismakros bis zum Excel-Crash.
Du willst in der Datei ein bestimmtes Blatt sichtbar machen, bevor die Datei geschlossen wird. Dann musst du natürlich die Datei auch speichern bevor sie geschlossen wird, wenn du die Sicherheitsabfrage von Excel vermeiden willst.
Ich würde das Makro wie folgt gestalten.
Gruß
Franz
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim TB1 As Worksheet
Dim objWB As Workbook
Dim bolQuit As Boolean
Dim WsShell                     ' Variable für Copyright
Dim LoI As Long
Set TB1 = Me.Worksheets("H-MENÜ")
TB1.Visible = xlSheetVisible
TB1.Activate
If Me.Saved = False Then Me.Save
bolQuit = True
For Each objWB In Application.Workbooks
Select Case objWB.Name
Case Me.Name
'do nothing
Case Else
If objWB.Windows(1).Visible = True Then
objWB.Windows(1).Activate      'ist eigentlich überflüssig
bolQuit = False
Exit For
Else
'nicht sichtbare Arbeitsmappen ggf. speichern
If objWB.Saved = False Then
objWB.Save
End If
End If
End Select
Next objWB
Set WsShell = CreateObject("WScript.Shell")
LoI = WsShell.Popup("   ...und Tschüss sagt: " _
& "" & vbCrLf & vbCrLf & "            schöne Meldung! " _
& "" & vbCrLf _
& "" & vbCrLf & vbCrLf & vbCrLf _
& Chr(169) & " 2010", 1, "Copyright-Hinweis")
'Excel ggf. beenden
If bolQuit = True Then Application.Quit
End Sub

Anzeige
AW: Workbook_BeforeClose
27.08.2014 10:02:16
Ludwig
Hallo Franz
Danke für deine Antwort. Aber ich möchte die Datei eben nicht speichern - aber nach der Meldung schließen!
Gruß Ludwig

AW: Workbook_BeforeClose
27.08.2014 10:22:52
fcs
Hallo Ludwig,
dann kannst du dir das aktivieren des Blatts "H-MENÜ" eigentlich sparen
und ersetze in meinem Code die Zeile
    If Me.Saved = False Then Me.Save

durch
    Me.Saved = True
Gruß
Franz

AW: Workbook_BeforeClose
27.08.2014 11:03:16
Ludwig
Hallo Franz
Bingo - das wars!
Danke!
Gruß Ludwig

85 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige