Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1116to1120
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
Workbook before close
Kirsche
hallo leute,
nachdem ich den ganzen tage recherchiert habe und nicht wirklich weiter gekommen bin, baue ich auf eure hilfe.
ich habe eine datei, welche beim schließen auf die tabelle "Start" zurück springen soll, dann soll in der tabelle "Start" in H65535, C25, C26 der wert gelöscht werden. zum schluß sollen alle anderen tabellen ausgeblendet werden.
leider funzt mein makro nicht, woran könnte das liegen?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim objWS As Worksheet
Sheets("Start").Select
Call SchutzAus_Start
hier springt der debugger an   Sheets("Start").Range("C25:C26,H65535").Value = ""
Call SchutzEin_Start
For Each objWS In ThisWorkbook.Worksheets
If objWS.Name  "Start" Then
objWS.Visible = xlSheetHidden
End If
Next
ThisWorkbook.Save
ThisWorkbook.Close
diese zeilen habe ich deaktiviert, weil excel sonst abstürzt
'If Workbooks.Count = 1 Then
'    Application.Quit
'Else
'    ThisWorkbook.Close True
'End If
End Sub
https://www.herber.de/bbs/user/66091.xls
gruß dörte

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Workbook before close
22.11.2009 19:14:02
Kirsche
ich vergass, das passwort lautet für beide

1

AW: Workbook before close
22.11.2009 19:47:24
IngGi
Hallo Kirsche,
mit

Union(Range("C25:C26"), Range("H65535").ClearContents
sollte es funktionieren.
Gruß Ingolf
AW: Workbook before close
22.11.2009 19:59:09
Kirsche
hallo ingolf,
das klappt super, danke.
kann ich in dieser routine eigentlich nur einen befehl auslösen?
wenn ich excel komplett schließen will, mit nachstehendem code, dann stürzt excel ab und will die mappe wieder herstellen. woran kann das liegen?
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Start").Select
Call SchutzAus_Start
Union(Range("C25:C26"), Range("H65535")).ClearContents
Call SchutzEin_Start
ThisWorkbook.Save
die zeile ist dann deaktiviert   ThisWorkbook.Close
diese zeilen meine ich
If Workbooks.Count = 1 Then
Application.Quit
Else
ThisWorkbook.Close True
End If
End Sub

gruß dörte
Anzeige
AW: Workbook before close
22.11.2009 19:53:53
fcs
Hallo Dörte,
du kannst in der Workbook_Close - Prozedur nicht nochmals
ThisWorkbook.Close
ausführen.
Dann kommt es zu einem rekursiven Aufruf der Prozedur, was hier aber keinen Sinn macht und dann beim 2. Durchlauf des Makros zum Fehler führt.
Mit der folgenden Anpassung sollte es funktionieren. Application,Quit funktioniert bei mir auch. Allerdings muss du auf Anzahl Workbooks = 2 prüfen, da normalerweise auch die persönliche Makrarbeitsmappe ausgeblendet gestartet wird - und die zählt mit.
Gruß
Franz
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim objWS As Worksheet
Sheets("Start").Select
Call SchutzAus_Start
Sheets("Start").Range("C25:C26,H65535").Value = ""
Call SchutzEin_Start
For Each objWS In ThisWorkbook.Worksheets
If objWS.Name  "Start" Then
objWS.Visible = xlSheetHidden
End If
Next
ThisWorkbook.Save
If Workbooks.Count = 2 Then
Application.Quit
End If
End Sub

Anzeige
AW: Workbook before close
22.11.2009 20:14:45
Kirsche
hallo franz,
ich habe den code so eingefügt und bekomme dann beim schließen diese fehlermeldung:
https://www.herber.de/bbs/user/66094.doc
diese meldung habe ich auch schon den ganzen tag bekommen, mit verschiedenen experimenten im code.
gruß dörte
AW: Workbook before close
22.11.2009 21:02:39
fcs
Hallo Claudia,
diese Fehlermeldung sagt natürlich vieles und eigentlich garnichts.
Ursache ?
Lass zumindest mal das "Application.Quit" weg.
Bei mir funktionierte deine Datei unter Excel 2007 mit meinen Anpassungen einwadfrei ohne Fehlermeldungen. Die Datei wird gespeichert und geschlossen und ggf. Excel auch beendet.
Setze im Workbook-Close Makro einen Haltepunkt. Führe dann die weiteren Schritte mit der F8-Taste aus. Dann siehst du zumindest in welcher Zeile Excel ggf. aussteigt.
Gruß
Franz
Anzeige
AW: Workbook before close
22.11.2009 21:17:43
Kirsche
hallo franz,
ich bin doch aber dörte, grins.
der code funzt nur, wenn nichts geändert wurde. sobald ich ein anderes blatt einblende, kommt diese fehlermeldung. auch bei deinem code. hab ich schon getestet. ich bin heute der tester vom dienst. macht mich schon ganz kirre, dass das nicht klappt, heul.
gruß dörte
AW: Workbook before close
22.11.2009 21:26:13
IngGi
Hallo Dörte,
eine Idee hätte ich noch. Möglicherweise stört sich Excel daran, dass in einer aktiven Close-Prozedur ein Application.Quit aufgerufen wird. Vielleicht lässt sich das dann durch ein vorgeschaltetes Cancel=True beheben:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim objWS As Worksheet

Sheets("Start").Select
Call SchutzAus_Start
Union(Range("C25:C26"), Range("H65535")).ClearContents
Call SchutzEin_Start

For Each objWS In ThisWorkbook.Worksheets
   If objWS.Name <> "Start" Then
       objWS.Visible = xlSheetHidden
   End If
Next
ThisWorkbook.Save

If Workbooks.Count = 2 Then
    Cancel = True
    Application.Quit
End If

End Sub
Code eingefügt mit VBA in HTML 2.0.0.3size>
@Franz:
Die Zeile

Sheets("Start").Range("C25:C26,H65535").Value = ""
interpretiert Excel bei mir als C25:H65535 (Excel2010 beta). Funktioniert das bei dir tatsächlich wie gewünscht, also C25:C26 und H65535?
Gruß Ingolf
Anzeige
AW: Workbook before close
22.11.2009 21:58:13
Kirsche
hallo ingolf,
sorry,das funzt auch nicht.
sobald ich eine eingabe getätigt habe, kommt es beim schließen zum absturz.
bin schon am verzweifeln hier.
die besagte zeile funktioniert unter excel2003 noch ohne union.
gruß dörte
AW: Workbook before close
22.11.2009 22:07:37
Kirsche
sorry, vergass die frage als offen zu kennzeichnen
gruß dörte
AW: Workbook before close
23.11.2009 01:32:31
Uwe
Hallo dörte,
hier mein Vorschlag, der bei mir mit E2000 funktioniert:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim objWS As Worksheet
Dim objWB As Workbook
Dim bolQuit As Boolean
Sheets("Start").Select
Call SchutzAus_Start
Sheets("Start").Range("C25:C26,H65535").Value = ""
Call SchutzEin_Start
For Each objWS In Me.Worksheets
If objWS.Name  "Start" Then
objWS.Visible = xlSheetHidden
End If
Next
Me.Save
bolQuit = True
For Each objWB In Application.Workbooks
If objWB.Name  Me.Name Then
If objWB.Windows(1).Visible = True Then
bolQuit = False
Exit For
End If
End If
Next objWB
If bolQuit = True Then Application.Quit
End Sub
Excel wird nur geschlossen, wenn keine weiteren sichtbaren Dateien offen sind!
Gruß Uwe
Anzeige
AW: Workbook before close
23.11.2009 09:15:17
kirsche
hallo uwe,
hab dein makro auch getestet. wenn ich was in den tabellen ändere und dann schließe, stürzt excel dabei auch ab.
ich denke, meine datei ist vermurkst. ich werd das heute abend mal mit ner neuen datei testen.
danke für deinen vorschlag.
gruß dörte

85 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige