Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CommandBars Aus/Einblenden

CommandBars Aus/Einblenden
31.10.2005 18:09:15
Dieterlem
Ich versuche die Arbeitsblatt-Menüleiste per VBA auszublenden. Dies funktioniert auch mit dem unten gezeigten Code recht gut. Nur wenn ich sie auf die gleiche Weise wieder einblenden will erhalte ich immer folgende Fehlermeldung:
"Fehler beim Kompilieren: Methode oder datenobjekt nicht gefunden."
Was mache ich falsch?
Sub Workbook_open()
...
If _
Application.Commandbars("Worksheet Menue Bar").Enabled = True Then
Application.Commandbars("Worksheet Menue Bar").Enabled = False
End If
...
Sub Workbook_BeforeClose(Cancel As Boolean)
...
If _
Application.Commandbars("Worksheet Menue Bar").Enabled = False Then
Application.Commandbars("Worksheet Menue Bar").Enabled = True
End If
...
Gruß dieterlem
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CommandBars Aus/Einblenden
31.10.2005 18:11:12
Kurt
Worksheet Menu Bar
AW: CommandBars Aus/Einblenden
31.10.2005 18:39:09
Dieterlem
Hallo,
Also der Tippfehler ist mir nur hier im Forum passiert. Die Frage bleibt leider damit unbeantwortet.
trotzdem Danke Kurt.
Es heißt natürlich:
Sub Workbook_open()
...
If _
Application.Commandbars("Worksheet Menu Bar").Enabled = True Then
Application.Commandbars("Worksheet Menu Bar").Enabled = False
End If
...
Sub Workbook_BeforeClose(Cancel As Boolean)
...
If _
Application.Commandbars("Worksheet Menu Bar").Enabled = False Then
Application.Commandbars("Worksheet Menu Bar").Enabled = True
End If
...
Anzeige
AW: CommandBars Aus/Einblenden
31.10.2005 18:46:01
Leo
Hi,
die Abfrage ist nicht erforderlich:

Private Sub Workbook_Open()
Application.Commandbars("Worksheet Menu Bar").Enabled = False
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Commandbars("Worksheet Menu Bar").Enabled = True
End Sub

Wobei wahrscheinlich die Ereignisse:

Private Sub Workbook_Activate()
und

Private Sub Workbook_Deactivate()
die bessere Wahl sind.
mfg Leo

Anzeige
AW: CommandBars Aus/Einblenden
31.10.2005 18:47:49
Matthias
Hallo Dieter,
ich würde es so machen:

Private Sub Workbook_Activate()
Application.CommandBars("Worksheet Menu Bar").Enabled = False
End Sub
Private Sub Workbook_Deactivate()
Application.CommandBars("Worksheet Menu Bar").Enabled = True
End Sub

Das ist universeller und nervt nicht, wenn man andere Mappe offen hat, die die Menu Bar ja wohl haben sollen.
Gruß Matthias
Anzeige
AW: CommandBars Aus/Einblenden
31.10.2005 19:41:36
Dieterlem
Das ist universeller und nervt nicht, wenn man andere Mappe offen hat, die die Menu Bar ja wohl haben sollen.
Das ist eine gute Sache, werde ich später noch einbauen, aber es ist auch nicht die Lösung.
Ich habe inzwischen auch die Abfrage herausgenommen doch leider hilft es mir nicht weiter.
Vieleicht hilft ein etwas genauerer Blick auf meinen Code:
Private Sub Workbook_open()
'========================Symbolleisten AUSSCHALTEN===================
Dim e%
For Each Cd In Application.CommandBars
If Cd.Type msoBarTypeMenuBar Then
If Cd.Visible Then
On Error Resume Next
e = e + 1
ReDim Preserve Cdb(e)
Cdb(e) = Cd.Name
Cd.Visible = False
End If
End If
Next Cd
Application.CommandBars("Worksheet Menu Bar").Enabled = False 'Menüleiste Datei, Bearbeiten...
With ActiveWindow
.DisplayHorizontalScrollBar = True 'Horizontale Bildlaufleiste
.DisplayVerticalScrollBar = True 'Horizontale Bildlaufleiste
.DisplayWorkbookTabs = False '"Tabellentabs" unten False = ausblenden
.DisplayHeadings = False 'Zeilenbeschriftung A1;A2;A3;A4... False = ausblenden
.WindowState = xlMaximized 'Fenstergröße maximieren
End With
...
SYMBOLLEISTE "sport1" wird erzeugt
...
Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next ' Falls die Symbolleiste nicht existiert, überspringen
Application.CommandBars("Sport1").Delete
On Error GoTo 0
'==================DINGE WIEDER EINSCHALTEN============================
'Alle zuvor ausgeblendeten Symbolleisten werden wieder eingeblendet=====
Dim e%
On Error Resume Next
For e = 1 To UBound(Cdb)
Application.CommandBars(Cdb(e)).Visible = True
Next e
'========================================================================
Application.CommandBars("Worksheet Menu Bar").Enable = True 'Menüleiste Datei, Bearbeiten...
With ActiveWindow
.DisplayHorizontalScrollBar = True 'Horizontale Bildlaufleiste
.DisplayVerticalScrollBar = True 'Horizontale Bildlaufleiste
.DisplayWorkbookTabs = True '"Tabellentabs" unten False = ausblenden
.DisplayHeadings = True 'Zeilenbeschriftung A1;A2;A3;A4... False = ausblende
.WindowState = xlMaximized
End With
Gruß Dieterlem
Anzeige
AW: CommandBars Aus/Einblenden
31.10.2005 19:54:40
Matthias
Hallo Dieterlem,
du brauchst dir nicht zu merken, welche Symbolleisten sichtbar waren und welche nicht. Setzt alle auf .Enabled = False, und sie sind deaktiviert. Setze .Enabled wieder auf True, und sie werden anzeigt oder nicht, je nach vorherigem Zustand.
Private Sub Workbook_Activate()
Dim cb As CommandBar
For Each cb In Application.CommandBars
    cb.Enabled = False
Next cb
With ActiveWindow
    .DisplayHorizontalScrollBar = True 'Horizontale Bildlaufleiste
    .DisplayVerticalScrollBar = True 'Horizontale Bildlaufleiste
    .DisplayWorkbookTabs = False '"Tabellentabs" unten False = ausblenden
    .DisplayHeadings = False 'Zeilenbeschriftung A1;A2;A3;A4... False = ausblenden
    .WindowState = xlMaximized 'Fenstergröße maximieren
End With
'SYMBOLLEISTE "sport1" wird erzeugt
'
'
End Sub
Private Sub Workbook_Deactivate()
Dim cb As CommandBar
For Each cb In Application.CommandBars
    cb.Enabled = True
Next cb
On Error Resume Next
 Application.CommandBars("Sport1").Delete
On Error Goto 0
With ActiveWindow
.DisplayHorizontalScrollBar = True 'Horizontale Bildlaufleiste
.DisplayVerticalScrollBar = True 'Horizontale Bildlaufleiste
.DisplayWorkbookTabs = True '"Tabellentabs" unten False = ausblenden
.DisplayHeadings = True 'Zeilenbeschriftung A1;A2;A3;A4... False = ausblende
.WindowState = xlMaximized
End With
End Sub
Gruß Matthias
Anzeige
AW: CommandBars Aus/Einblenden
31.10.2005 21:00:56
Dieterlem
OK das geht mit den Standard Menüleisten. Wenn ich allerdings eine eigene symbolleiste (z.b: "sport1") mit Application.CommandBars("Sport1").Enabled = False schließen will bekomme ich eine Fehlermeldung, wenn sie nicht (existiert oder angezeigt?) wird.
Deshalb mit:
On Error Resume Next
Application.CommandBars("Sport1").Delete
On Error Goto 0
Ich werde mal ein paar Versuche damit machen.
Gruß
Dieterlem
Anzeige
AW: CommandBars Aus/Einblenden
31.10.2005 22:30:21
Dieterlem
Hallo,
hab ein wenig mit Deiner Idee rumgespielt. Ich denke ich bin zu einem guten Ergebnis gekommen. Ich habe einmal die Experementierdatei hochgeladen. Wer Interesse hat kann ja damit mal ein wenig Spielen. Ich habe alle Subs auf Buttons gelegt, damit man das Ergebnis besser verfolgen kann. Eine Auswertung aller Symbolleisten ist auch dabei.
https://www.herber.de/bbs/user/28003.xls
Gruß
Dieterlem
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

CommandBars in Excel Aus- und Einblenden


Schritt-für-Schritt-Anleitung

Um die Arbeitsblatt-Menüleiste in Excel über VBA auszublenden und wieder einzublenden, kannst Du folgenden Code verwenden:

Private Sub Workbook_Open()
    Application.CommandBars("Worksheet Menu Bar").Enabled = False
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.CommandBars("Worksheet Menu Bar").Enabled = True
End Sub

Dieser Code stellt sicher, dass die Menüleiste beim Öffnen der Arbeitsmappe ausgeblendet und beim Schließen wieder eingeblendet wird.


Häufige Fehler und Lösungen

Ein häufiger Fehler, auf den Du stoßen kannst, ist die Fehlermeldung: "Methode oder Datenobjekt nicht gefunden." Dies geschieht oft, wenn Du einen Tippfehler im Namen der CommandBar hast. Achte darauf, dass der Name exakt übereinstimmt:

Application.CommandBars("Worksheet Menu Bar").Enabled = True

Stelle sicher, dass "Worksheet Menu Bar" korrekt geschrieben ist.

Ein weiterer Fehler könnte auftreten, wenn Du versuchst, eine nicht existierende benutzerdefinierte Symbolleiste auszublenden. Verwende hier On Error Resume Next, um Fehler zu überspringen:

On Error Resume Next
Application.CommandBars("Sport1").Enabled = False
On Error GoTo 0

Alternative Methoden

Statt die Menüleiste beim Öffnen und Schließen der Arbeitsmappe zu steuern, kannst Du auch die Ereignisse Workbook_Activate und Workbook_Deactivate verwenden. Dies sorgt dafür, dass die Menüleiste nur ausgeblendet wird, wenn die Arbeitsmappe aktiv ist:

Private Sub Workbook_Activate()
    Application.CommandBars("Worksheet Menu Bar").Enabled = False
End Sub

Private Sub Workbook_Deactivate()
    Application.CommandBars("Worksheet Menu Bar").Enabled = True
End Sub

Diese Methode ist besonders nützlich, wenn Du mehrere Arbeitsmappen offen hast und nur bei Deiner Arbeitsmappe die Menüleiste steuern möchtest.


Praktische Beispiele

In einer erweiterten Version Deines Codes könntest Du auch alle anderen CommandBars ausblenden. Hier ein Beispiel:

Private Sub Workbook_Open()
    Dim cb As CommandBar
    For Each cb In Application.CommandBars
        If cb.Type = msoBarTypeMenuBar Then
            cb.Visible = False
        End If
    Next cb
    Application.CommandBars("Worksheet Menu Bar").Enabled = False
End Sub

Dieses Skript blendet alle Menüleisten aus und sorgt dafür, dass die Worksheet Menu Bar deaktiviert bleibt.


Tipps für Profis

  1. Fehlerbehandlung: Nutze On Error Resume Next sorgfältig, um Fehler zu überspringen, ohne den Code zu unterbrechen.
  2. Variablen verwenden: Halte Deinen Code übersichtlich, indem Du Variablen für CommandBars einsetzt. Das verbessert die Lesbarkeit.
  3. Benutzerdefinierte Symbolleisten: Achte darauf, dass benutzerdefinierte Symbolleisten existieren, bevor Du Versuche unternimmst, sie auszublenden oder zu löschen.

FAQ: Häufige Fragen

1. Wie kann ich die Menüleiste dauerhaft ausblenden?
Um die Menüleiste dauerhaft auszublenden, kannst Du den entsprechenden Code im Workbook_Open-Ereignis platzieren.

2. Was mache ich, wenn die CommandBar nicht existiert?
Verwende On Error Resume Next, um sicherzustellen, dass der Code weiterläuft, auch wenn eine CommandBar nicht gefunden wird.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, dieser VBA-Code sollte in den meisten Excel-Versionen funktionieren, die die Application.CommandBars-Methode unterstützen. Achte jedoch darauf, dass die Benutzeroberfläche in neueren Versionen variieren kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige