Hallo,
ich bin kurz vor dem Wahnsinn, weil mein VBA einfach nicht das macht, was ich will :-(
Im Sinne einer "sauberen" Programmierung möchte ich beim Öffnen meiner Datei die Eigenschaften "Bearbeitungsleiste", "Statuszeile", horizontaler und vertikaler Scrollbalken auslesen und beim Schließen der Datei wieder den Urzustand herstellen. Dies auch deshalb, weil ich innerhalb meiner Datei bei manchen Blättern diese Eigenschaften de- und bei anderen wieder aktiviere.
Mein Code sieht folgendermaßen aus ("DieseArbeitsmappe"):
Option Explicit
Dim bolStatusBar As Boolean
Dim bolFormulaBar As Boolean
Dim bolDisplayHorizontalScrollBar As Boolean
Dim bolDisplayVerticalScrollBar As Boolean
Dim bolStatusBarTemp As Boolean
Dim bolFormulaBarTemp As Boolean
Dim bolDisplayHorizontalScrollBarTemp As Boolean
Dim bolDisplayVerticalScrollBarTemp As Boolean
Dim strStatusBarTemp As String
Private Sub Workbook_Open()
Application.AskToUpdateLinks = False
With Application
.ScreenUpdating = False
bolStatusBar = .DisplayStatusBar
bolFormulaBar = .DisplayFormulaBar
End With
With ActiveWindow
bolDisplayHorizontalScrollBar = .DisplayHorizontalScrollBar
bolDisplayVerticalScrollBar = .DisplayVerticalScrollBar
End With
' Msgbox für mich zum Test #######################
MsgBox "bolStatusBar " & bolStatusBar & Chr(10) _
& "bolFormulaBar " & bolFormulaBar & Chr(10) _
& "bolDisplayHorizontalScrollBar " & bolDisplayHorizontalScrollBar & Chr(10) _
& "bolDisplayVerticalScrollBar " & bolDisplayVerticalScrollBar & Chr(10) _
& "bolStatusBarTemp " & bolStatusBarTemp & Chr(10) _
& "bolFormulaBarTemp " & bolFormulaBarTemp & Chr(10) _
& "bolDisplayHorizontalScrollBarTemp " & bolDisplayHorizontalScrollBarTemp & Chr(10) _
& "bolDisplayVerticalScrollBarTemp " & bolDisplayVerticalScrollBarTemp & Chr(10) _
& "strStatusBarTemp " & strStatusBarTemp
With Application
.DisplayStatusBar = True
End With
End Sub
################################################
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.ScreenUpdating = False
.StatusBar = ""
.DisplayStatusBar = bolStatusBar
.DisplayFormulaBar = bolFormulaBar
End With
With ActiveWindow
.DisplayHorizontalScrollBar = bolDisplayHorizontalScrollBar
.DisplayVerticalScrollBar = bolDisplayVerticalScrollBar
End With
With Application
.ScreenUpdating = True
End With
End Sub
################################################
Private Sub Workbook_Activate()
With Application
.ScreenUpdating = False
.StatusBar = strStatusBarTemp
.DisplayStatusBar = bolStatusBarTemp
.DisplayFormulaBar = bolFormulaBarTemp
End With
With ActiveWindow
.DisplayHorizontalScrollBar = bolDisplayHorizontalScrollBarTemp
.DisplayVerticalScrollBar = bolDisplayVerticalScrollBarTemp
End With
With Application
.ScreenUpdating = True
End With
End Sub
################################################
Private Sub Workbook_Deactivate()
With Application
.ScreenUpdating = False
bolStatusBarTemp = .DisplayStatusBar
bolFormulaBarTemp = .DisplayFormulaBar
strStatusBarTemp = .StatusBar
.StatusBar = ""
.DisplayStatusBar = bolStatusBar
.DisplayFormulaBar = bolFormulaBar
End With
With ActiveWindow
bolDisplayHorizontalScrollBarTemp = .DisplayHorizontalScrollBar
bolDisplayVerticalScrollBarTemp = .DisplayVerticalScrollBar
.DisplayHorizontalScrollBar = bolDisplayHorizontalScrollBar
.DisplayVerticalScrollBar = bolDisplayVerticalScrollBar
End With
With Application
.ScreenUpdating = True
End With
End Sub
################################################
Außerdem habe ich EIN Tabellenblatt mit folgendem Code:
Option Explicit
Dim bolStatusBar As Boolean
Dim bolFormulaBar As Boolean
Dim bolDisplayHorizontalScrollBar As Boolean
Dim bolDisplayVerticalScrollBar As Boolean
Dim bolStatusBarTemp As Boolean
Dim bolFormulaBarTemp As Boolean
Dim bolDisplayHorizontalScrollBarTemp As Boolean
Dim bolDisplayVerticalScrollBarTemp As Boolean
Dim strStatusBarTemp As String
Private Sub Worksheet_Activate()
With Application
.ScreenUpdating = False
.DisplayFormulaBar = False
.DisplayStatusBar = False
End With
With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
End With
With Application
.ScreenUpdating = True
End With
End Sub
################################################
Private Sub Worksheet_Deactivate()
With Application
.ScreenUpdating = False
End With
With ActiveWindow
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
End With
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = True
.ScreenUpdating = True
End With
End Sub
################################################
Warum funktioniert das denn nicht bzw. warum werden die Variablen, die ich am Anfang einlese immer wieder verändert (vermutlich ist das der Grund dafür ...).
Ständig habe ich unerwünschte Zustände - hauptsächlich bzgl. der Scrollbalken. Mal sind sie in anderen Dateien, zu denen ich wechsle, verschwunden, dann sind sie wieder in Tabellenblättern dieser Datei verschwunden.
Hoffentlich weiß jemand Rat. VIIIIELEN DANK auf jeden Fall schon mal.
Gruß
Jojo