Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
728to732
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
728to732
728to732
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

DisplayFormulaBar wird nicht zurückgesetzt

DisplayFormulaBar wird nicht zurückgesetzt
08.02.2006 10:23:48
Heiko
Hallo!
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DisplayFormulaBar wird nicht zurückgesetzt
08.02.2006 10:37:52
Nepumuk
Hallo Heiko,
wenn du das einblenden in einem Standardmodul ausführst, dann funktioniert es auch. Ich bin sowieso kein Freund von Code in Klassenmodulen. Da kommt bei mir immer nur der Aufruf einer Routine in einem Standardmodul rein.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call prcClose
End Sub

Private Sub Workbook_Open()
    Call prcOpen
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub prcClose()
    With Application
        .DisplayFormulaBar = True
        .DisplayStatusBar = True
    End With
End Sub

Public Sub prcOpen()
    With Application
        .DisplayFormulaBar = False
        .DisplayStatusBar = False
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: DisplayFormulaBar wird nicht zurückgesetzt
08.02.2006 11:41:30
Heiko
Hallo, Nepumuk!
Sorry, aber das ist nicht die Lösung. Es ist egal, ob der Code in einem Modul steckt oder in der Eventprozedur direkt aufgerufen wird. Das Resultat ist das gleiche: die Eigenschaften werden nicht gesetzt.
Das Entscheidende ist hierbei, dass das Workbook aus einem ANDEREN Workbook über die Close-Methode geschlossen wird. Hast Du das mal getestet?
Gruß
Heiko
AW: DisplayFormulaBar wird nicht zurückgesetzt
08.02.2006 12:18:47
Nepumuk
Hallo Heiko,
hmmmmmmmmm. Einzige Möglichkeit, du rufst die Routine "prcClose" mit Application.Run auf.
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige