DisplayFormulaBar wird nicht zurückgesetzt
08.02.2006 10:23:48
Heiko
Habe da ein Problem mit Excel. Wird ein Workbook aus VBA-Code heraus geschlossen, wird zwar das Ereignis "BeforeClose" ausgelöst, allerdings werden die properties "DisplayFormularBar" oder auch "DisplayStatusBar" nicht gesetzt.
Im ersten Workbook (ich nenne es mal "test_display.xls") steht folgender Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Debug.Print "BeforeClose..."
Application.DisplayFormulaBar = True
Application.DisplayStatusBar = True
End Sub
Private Sub Workbook_Open()
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False
End Sub
Wird das Workbook "normal", also über den Schließen-Button des Fensters geschlossen, werden die Eigenschaften auch richtig zurückgesetzt.
Anders sieht es aus, wenn ich ein zweites Workbook öffne und dort zum Beispiel den folgenden Code ausführe (etwa über eine neue MenuBar):
Sub Beenden()
Application.Workbooks("test_display.xls").Close True
End Sub
Der einfachheithalber hier noch der Code für die MenuBar im zweiten Workbook:
Private Sub Workbook_Open()
Dim cmb As CommandBar
Dim btn As CommandBarButton
For Each cmb In Application.CommandBars
If cmb.Name = "test_bar" Then cmb.Delete
Next
Set cmb = Application.CommandBars.Add("test_bar", msoBarTop, False, True)
Set btn = cmb.Controls.Add(msoControlButton)
btn.Caption = "Schluß!"
btn.Style = msoButtonCaption
btn.Enabled = True
btn.OnAction = "Beenden"
cmb.Visible = True
End Sub
Wird die "Beenden" Prozedur ausgeführt, triggert das Ereignis "BeforeClose" des ersten Workbooks, allerdings bleiben die Bearbeitungs- und Statusleiste ausgeblendet. Anhand der debug-Meldung kann man sehen, dass das Ereignis durchaus ausgeführt wird. Was kann ich da noch tun, damit ich immer sicher bin, dass die Eigenschaften richtig gesetzt werden?
Gruß
Heiko Torner