Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
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

Speichern - Fehlermeldung bei Verlassen der Datei

Speichern - Fehlermeldung bei Verlassen der Datei
kle
Hallo,
...OK, heut komme ich irgendwie nicht weiter. Jetzt habe ich folgendes Problem:
Wenn ich eine Datei schließe, vor allem per "x"-Button, erscheint ein Hinweis von Excel, ob ich die Änderungen speichern möchte. Also schrieb ich folgendes:
' unter "diese Arbeitsmappe"...
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = False
'Application.EnableEvents = False
ActiveWorkbook.Save ' Speichern um alle Änderungen zwingend zu erfassen
' Blende alle Arbeitsblätter bis auf das Startblatt aus
For i = 1 To Worksheets.Count
Select Case Worksheets(i).Name
Case Is = "Start"
Startbloc = True
Worksheets(i).Visible = True
Worksheets("Start").Activate
Worksheets("Start").Range("C1").Value = "" ' Artikelbezeichnung leeren
Worksheets("Start").Range("C2").Value = "" ' ArtikelNr. leeren
Worksheets("Start").Range("A1").Value = 1  ' Zähler wieder auf 1 setzen
Worksheets("Start").Range("C1").Select       ' Wieder Fokus auf C1 setzen
Case Else
Worksheets(i).Visible = False
End Select
Next i
ActiveWorkbook.Save                  ' 2'ter Versuch, Speichern um alle Änderungen zwingend zu  _
erfassen
'Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Aber es bleibt bei der Fehlermeldung, obwohl ich doch die Datei nun speichern lasse vor dem schließen?
Dachte dann an
Fehlermeldung unterdrücken - aber dann speichert es die Datei gleich garnicht.
Was kann ich wie tun ?! Die Datei soll doch nur gespeichert werden - vor dem Schließen der Datei.
Danke und Gruß
Kay
PS: da habe ich nun 4 dicke Bücher und google - aber keine richtige Lösung... ;o(
AW: Speichern - Fehlermeldung bei Verlassen der Datei
06.01.2011 13:47:56
Rudi
Hallo,
bei mir klappt das.
Würde ich aber so machen:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wks As Worksheet
Application.ScreenUpdating = False
With Worksheets("Start")
.Visible = True
.Activate
.Range("C1").Value = "" ' Artikelbezeichnung leeren
.Range("C2").Value = "" ' ArtikelNr. leeren
.Range("A1").Value = 1  ' Zähler wieder auf 1 setzen
.Range("C1").Select       ' Wieder Fokus auf C1 setzen
End With
' Blende alle Arbeitsblätter bis auf das Startblatt aus
For Each wks In Worksheets
wks.Visible = wks.Name = "Start"
Next wks
Me.Save
End Sub

Gruß
Rudi
Anzeige
AW: leider noch nicht gelöst...
06.01.2011 14:13:11
kle
Hallo Rudi (mein heutiger Mentor?)
Danke vorweg! Es klappt bei mir nur - wenn ich Excel vorher komplett geschlossen hatte. Nur die Datei schließen reicht nicht aus...komisch. Erhalte immer noch die Meldung, ob Änderungen an der Datei gespeichert werden sollen...
Eine Frage habe ich noch zu Deiner Version, was bedeutet diese Zeile:
wks.Visible = wks.Name = "Start"
und warum blendet diese alle aus, da steht doch nichts von Visible = False ?!?
Gruß und Danke
Kay
PS: Sollte es dieses Jahr ein Forumstreffen geben, bin ich gern dabei und gebe Dir ein Bier aus ;o)
AW: leider noch nicht gelöst...
06.01.2011 14:27:34
Rudi
Hallo,
kann ich nicht nachvollziehen. Laufen noch andere Eeignisprozeduren?
wks.Visible = wks.Name = "Start"
Ist doch ganz einfach. Logischer Ausdruck.
wks.Name = "Start" ergibt nur True wenn wks.Name="Start" ist ansonsten False.
Sinniger wäre aber, die Sheets auf xlSheetVeryHidden zu setzen, damit sie nicht einfach wieder eingeblendet werden können.
wks.Visible = (wks.Name = "Start")*3+2
Gruß
Rudi
Anzeige
AW: leider noch nicht gelöst...
06.01.2011 14:49:56
kle
Hallo Rudi,
nun, ich prüfe grad alle anderen Befehle. Ja, ich habe da noch ein Ereignis, was es sein könnte...
Prüfe noch - wo genau es zu einem "Problem" führt... Melde mich wieder.
Eigentlich wirklich logisch, das wenn etwas nicht eintritt, es gleich False ist. Wusste nur nicht, dass man es so in VBA einsetzen kann...
OK, und woher soll man (ich) das wissen, dass "wks.Visible = (wks.Name = "Start")*3+2" = xlSheetVeryHidden ist ?!? Das steht in keinem meiner Bücher !
Was genau macht dieses *3+2 ?!
Gruß und danke
Kay
(wks.Name = "Start")*3+2
06.01.2011 15:07:17
Rudi
Hallo,
das ist eine einfache lineare Funktion.
wks.Visible kann sein:
xlSheetVisible =-1
xlSheetHidden = 0
xlSheetVeryHidden = 2
das kannst du im VBE in den Blatteigenschaften sehen oder einfach mal im Direktfenster ?xlSheetVeryHidden eingeben.
TRUE ist in VBA -1, FALSE ist 0
TRUE*3+2= -1*3+2 =-3+2 =-1 =xlSheetVisible
FALSE*3+2 =0*3+2 =0+2 =2 =xlSheetVeryHidden
Gruß
Rudi
Anzeige
AW: (wks.Name = "Start")*3+2
06.01.2011 15:21:37
kle
Wow ... super vielen Dank, davon habe ich in meinen Büchern bisher noch nichts gelesen...
Gibst Du Excel-Kurse ?!?
Gruß
Kay
Kurse
06.01.2011 15:45:40
Rudi
Hallo,
ich gebe keine und habe nie einen besucht. Ich habe auch keine Bücher (außer Zauberbuch).
Der beste Kurs ist das Forum, ein unausgelebter Basteltrieb, Faulheit und ein gesunder Verstand ;-)
Gruß
Rudi
Am Letzteren hapert's oft am meisten... ;-) orT
06.01.2011 17:10:40
Luc:-?
Gruß Luc :-?
AW: leider noch nicht gelöst...
06.01.2011 15:40:54
kle
So, bin jetzt mal alle Code-Zeilen durchgegangen.
Es bleibt dabei, er fragt mich - ob ich Änderungen speichern möchte...
Also, ich habe ein Datenblatt, in dem der User ein Benutzernamen eintragen muss, um verschiedene Funktionen zu erhalten. Trägt er was falsches ein, soll die Datei sich schließen und vorher alles speichern, da die Falscheingabe gespeichert wird.
Soweit klappt auch alles, nur wenn ich eben an der Stelle bin: ActiveWorkbook.Close - geht er rüber zu Workbook_BeforeClose und macht das eben, was wir hier hatten (Blätter ausblenden, Datei speichern etc.)
Dann, wenn er diesen Bereich (BeforeClose) verlässt nach End sub, kommt die Meldung - ob Änderungen gespeichert werden sollen...
Dabei hatte er doch grad selbst gespeichert und danach wird nichts mehr gemacht.
Klicke ich auf abbrechen in dieser Meldung, und wechsle in den VBA-Editor hängt die Markierung in der Hauptfunktion des Sheets, wo der Close-Befehl stand, genau danach wo nur noch kommt:
goto Ende
.
.
.
Ende:
End Sub
Ich versteh es nicht und bin am verzweifeln...
Leider kann ich die Datei aus Datenschutzgründen nicht online stellen... ;o(
Gruß
Kay
Anzeige
AW: leider noch nicht gelöst...
06.01.2011 16:07:24
Rudi
Hallo,
setz mal einen Haltepunkt ins Before_close und geh alles mit F8 durch. Dann siehst du, ob nachgelagerte Ereignisse (z.B. Workbook_Deactivate) noch was ändern.
Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige