xlVeryHidden Code von Hajo, brauche Erläuterung
05.09.2005 22:53:28
Hajo,
habe Code von Hajo aus 2003 im Archiv gefunden:
Option Explicit
Dim InI As Integer
Dim ByS As Boolean
' erstellt von Hajo.Ziplies@web.de 13.01.03
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' blendest alle anderen Register aus
' Sheets("Tabelle2").Visible = xlVeryHidden aus außer Tabelle1
Dim Mldg As Byte
If ActiveWorkbook.Saved Then ' Datei wurde verändert
Worksheets("Tabelle1").Visible = True
For InI = Worksheets.Count To 1 Step -1
If Worksheets(InI).Name <> "Tabelle1" Then Worksheets(InI).Visible = xlVeryHidden
Next InI
ByS = True
ThisWorkbook.Save
Else
If ByS = True Then Exit Sub
Mldg = MsgBox(" Sollen die Veränderungen gespeichertg werden ?", _
vbYesNo + vbQuestion, "Speicher abfrage ?", "", 0)
If Mldg = 6 Then
Worksheets("Tabelle1").Visible = True
For InI = Worksheets.Count To 1 Step -1
If Worksheets(InI).Name <> "Tabelle1" Then Worksheets(InI).Visible = xlVeryHidden
Next InI
ByS = True
ThisWorkbook.Save
Else
ByS = True
ThisWorkbook.Close False
End If
End If
End Sub
Verstehe folgende Zeile nicht:
If ActiveWorkbook.Saved Then ' Datei wurde verändert
Wenn Saved = true dann ist die Datei doch schon gespeichert, warum muss Sie dann nochmal gesichert werden? Da im Folgecode (habe ich nicht angefügt) das manuelle Speichern mit BeforeSave abgefangen wurde, kann doch der Zustand Saved = true nur eintreten (bzw. von Anfang an vorhanden sein), wenn NICHTS verändert wurde?!?! Dann brauche ich auch nicht nochmal Save aufzurufen, oder?
Eigentlich müsste doch der Code im Else mit vorangestellter Zeile reichen:
If ActiveWorkbook.Saved = false Then ' Datei wurde verändert, Code hinter else ausführen
...
Der Link zum alten Thread ist: https://www.herber.de/forum/index.htm?https://www.herber.de/forum/archiv/236to240/t239282.htm
Viele Grüße und danke für den Tip :)
Norman