Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Menueeintag deaktivieren

Menueeintag deaktivieren
08.10.2014 23:50:47
Ewald
Hallo,
im Menue Start/Format/Ausblenden & Einblenden/ soll "Spalten einblenden" deaktiviert werden.
Nur wie ?
Gruß Ewald

Anzeige

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Menueeintag deaktivieren
09.10.2014 00:13:45
Adis
Hallo
im Archiv steht ein Beispiel dafür, ich weiss nicht ob es passt?
Grundsaetzlich geht es über den Befehlscode - .Enabled = False
Mit dem unteren Code einfach mal ausprobieren ob es klappt.
Private Sub Workbook_Activate()
Application.CommandBars(1).Controls("Extras").Controls("Schutz").Enabled = False
End Sub
Vielleicht so, falls nein muss die Objekt Angabe geaendert werden.
Application.CommandBars("Start").Controls("Format").Controls("Ausblenden & Einblenden").Controls("Spalten Einblenden").Enabled = False
Grus Adis

Anzeige
AW: Menueeintag deaktivieren
09.10.2014 01:03:06
Ewald
Hallo Adis,
leider nicht Laufzeitfehler 5
Gruß Ewald

AW: Menueeintag deaktivieren
09.10.2014 11:45:47
Kasimir
Hallo Ewald!
Der Code von Adis funktioniert nur bis Excel 2003. Wenn es sich wirklich um Excel 2010 handelt (hattest Du unter Version angegeben), dann wird es da wohl keine Möglichkeiten geben einzelne Schaltflächen zu deaktivieren. Da kann man, soweit mir bekannt ist, dann nur alles deaktivieren, was zum Ausblenden aller Ribbonleisten führt und durch eine eigene Ribbonleiste ersetzen.
Gruß,
Kasimir

Anzeige
AW: Menueeintag deaktivieren
09.10.2014 13:26:12
Ewald
Hallo Kasimir,
ich kann ja mit
Dim myob As Object
For Each myob In Application.CommandBars.FindControls(ID:=887)
myob.Enabled = False
Next
das Einblenden (rechte Maustaste) deaktivieren
das Problem ist nur das ich die ID für das Einblenden im Formatmenue nicht finde, da es vielleicht unter anderem Namen dort steht.
Gruß Ewald

Anzeige
AW: Menueeintag deaktivieren
09.10.2014 19:01:49
mumpel
Hallo!
@ Kasimir
Im Menüband kann man auch einzelne Elemente deaktivieren (über die Command-Ebene in der Anpassungsdatei). Damit wird aber der gesamte Befehl deaktiviert (auch per VBA nicht mehr ansprechbar), nicht nur das Element.
@ Ewald
Mach das besser per RibbonX. Da kannst Du den Befehl deaktivieren oder umlenken, und dafür den Namen des Elementes nutzen. Siehe hierzu Command, QAT, Officemenü beeinflussen in meinem Workshop.
Gruß, René
Gruß, René

Anzeige
AW: Menueeintag deaktivieren
09.10.2014 23:08:40
Ewald
Hallo Rene,
hatte gehofft, das du dich meldest, du kennst dich je bestens damit aus.
Nur wenn ich mir die ID-Liste ansehe, so sieht es aus als wenn man da garnicht dran kommt.
Es gibt noch "Ansicht und Sicherheit" , nur ab da kommt nichts mehr. Weder "AusBlenden & einblenden" und auch das nachfolgende Menue ist nicht mehr aufgeführt, weder mit Namen noch mit ID.
Auch sind noch zwei andere Fragen aufgetaucht.
Das Tastenkürzel Umschalt+Strg +"(" läßt sich mit
Application.OnKey "+^(()", ""
nicht ausschalten, kann aber auch falsch geschrieben sein.
und dann gibt es ja auch noch die Maus, wo wenn man etwas länger wartet, die ausgeblendete Spalte auch aufziehen kann.
Wenn man dies jetzt alles lösen kann, bliebe dann noch die Frage, ob das mit einem Makro machbar ist.
Du hälst zwar in deinem Workshop nichts davon, nur in diesem Fall müßte es so sein, da ja per Makro auch wieder alles zurückgestellt werden muß.
Meiner Meinung wäre es schon optimal dieses hinzubekommen, nur sind im Moment meinerseits noch zuviel Fragezeichen.
Gruß Ewald

Anzeige
AW: Menueeintag deaktivieren
10.10.2014 11:50:40
mumpel
Was genau meinst Du mit "Ansicht und Sicherheit" und "Ausblenden und einblenden"? In dieser Art gibt es das bei mir nicht.

AW: Menueeintag deaktivieren
10.10.2014 13:15:45
Ewald
Hallo Rene,
Reiter Start,Bereich Zellen Format.
unter Sichtbarkeit ist Ausblenden & Einblenden und dann Spalten einblenden.
Dieser Befehl hat aber nicht die ID 887 oder aber reagiert nicht darauf.
Gruß Ewald

Anzeige
AW: Menueeintag deaktivieren
10.10.2014 16:43:27
mumpel
Mit "ID" kommst Du auch nicht weit, da man in Office 2007-2013 nur mit RibbonX Befehle behandeln kann. Und in RibbonX wird mit der imageMso/idMso gearbeitet, nicht mehr mit "Application.CommandBars.Find".
"Zeile einblenden" hat die idMso/imageMso "RowsHide" bzw. "RowsUnhide" für "Zeile ausblenden".
"Spalte einblenden" hat die idMso/imageMso "ColumnsHide" bzw. "ColumnsUnhide" für "Spalte ausblenden".
"Blatt ausblenden" wäre dann "SheetUnhide" bzw. "SheetHide" für "Blatt einblenden".
Das Menü selber lässt sich eventuell auch ausblenden, siehe hierzu "Vorhandende Tabs anpassen" in meinem Workshop.
Wichtig zu wissen ist, dass das Menüband nicht per VBA beeinflusst werden kann. Du musst Dich also mit RibbonX befassen.

Anzeige
AW: Menueeintag deaktivieren
11.10.2014 23:36:47
Ewald
Hallo Rene,
in der folgenden Datei kann ich im Menueband Tab Start die Gruppe Zellen mit zwei Button ein- bzw. ausblenden.
https://www.herber.de/bbs/user/93117.xlsm
doch eigentlich will ich ja noch drei Instanzen tiefer
Parentcontrol: FormatCellsMenu
Secondary Parentcontrol: HideAndUnhideMenu
ColumnsUnhide
nur wie schreib ich das jetzt in xml
dann müßte ja auch noch der Code im Ribbonmodul angepaßt werden
Vielleicht kannst du ja mal reinschauen.
Gruß Ewald

Anzeige
AW: Menueeintag deaktivieren
12.10.2014 19:31:51
mumpel
Über die Commands-Ebene deaktivieren. Damit sind nicht nur die Elemente deaktiviert, sondern der gesamte Befehl, dieser ist dann auch für die Nutzung per VBA gesperrt (wie bereits erwähnt).
<customUI onLoad="RibbonOnLoad" xmlns="http://schemas.microsoft.com/office/2009/07/customui">

   <commands>
     <command idMso="ColumnsHide" enabled="false" />
     <command idMso="RowsHide" enabled="false" />
   </commands>

   <ribbon>

   </ribbon>

   <backstage>
   
   </backstage>

   <contextMenus>
     <contextMenu>

     </contextMenu>
   </contextMenus>
        
</customUI>


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 15

Anzeige
AW: Menueeintag deaktivieren
13.10.2014 01:23:23
Ewald
Hallo Rene,
bei mir funktioniert das nicht.
es ist nur der manuelle Befehl(rechte Maustaste) deaktiviert.
wenn ich aber über Format gehe kann ich die Spalte trotzdem einblenden.
Was mache ich falsch
Gruß Ewald

AW: Menueeintag deaktivieren
13.10.2014 09:35:13
mumpel
Dann machst Du etwas falsch. Aktiviere mal die Fehlerprüfung (Datei=>Optionen=>Erweitert, Abschnitt "Allgemein", Haken setzen bei "Fehler in Benutzeroberflächen-Add-Ins anzeigen") und öffne dann die Datei.

Anzeige
AW: Menueeintag deaktivieren
13.10.2014 10:31:04
Ewald
Hallo Rene,
dann wird folgennde Meldung angezeigt
Userbild
obwohl im UI keine Fehlermeldung kommt.
Wenn ich dann versuche dort FormatCellsMenu einzutragen, meckert der UI
Gruß Ewald

Anzeige
AW: Menueeintag deaktivieren
13.10.2014 10:49:21
mumpel
Dann musst Du etwas falsch gemacht haben. Poste mal die fehlerhafte Datei.

Nachtrag
13.10.2014 10:52:00
mumpel
Noch ein wichtiger Hinweis:
Über die Command-Ebene können nur die Befehle (Commands) deaktiviert werden, aber keine Menüs.

AW: Nachtrag
13.10.2014 11:35:13
Ewald
Hallo Rene,
hier mal die Datei
https://www.herber.de/bbs/user/93137.xlsm
ist wie von dir gepostet noch mit ColumnsHide
wenn ich jetzt ColumnsUnhide benutzen will, wird auch dies angemeckert als unbekannt.
Nur es soll ja Spalten einblenden nicht möglich sein.
Gruß Ewald

Anzeige
AW: Nachtrag
13.10.2014 11:48:10
mumpel
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">

   <commands>
     <command idMso="ColumnsHide" enabled="false" />
     <command idMso="RowsHide" enabled="false" />
     <command idMso="ColumnsUnhide" enabled="false" />
     <command idMso="RowsUnhide" enabled="false" />
   </commands>

   <ribbon>

   </ribbon>
        
</customUI>


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 15
Die Meldung "id oder idMso fehlt" liegt vermutlich am leeren Abschnitt "contextMenus". Wenn Du das weglässt sollte auch die Fehlermeldung ausbeleiben.

Anzeige
AW: Nachtrag
13.10.2014 14:27:24
Ewald
Hallo Rene,
das funktioniert erstmal jetzt so wie es soll.
dies ist aber jetzt statisch, kann ich GetEnabled auch unter command einsetzen, damit ich das auch ändern kann.
Gruß Ewald

AW: Nachtrag
13.10.2014 16:29:39
mumpel
Kannst Du. Einfach mal ausprobieren. Aber richtig schreiben (getEnabled), die Schreibweise ist sehr wichtig.
Du könntest den Befehl auch umlenken. Dann kannst Du entscheiden wann was geschehen soll.
RibbonX-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad_93137" >

   <commands>
     <command idMso="ColumnsHide" onAction="onAction_Commands" />
     <command idMso="RowsHide" onAction="onAction_Commands" />
     <command idMso="ColumnsUnhide" onAction="onAction_Commands" />
     <command idMso="RowsUnhide" onAction="onAction_Commands" />
   </commands>

   <ribbon>

   </ribbon>
        
</customUI>


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 15
VBA-Code:
Option Private Module
Option Explicit

Dim objRibbon As IRibbonUI


Public Sub onLoad_93137(ribbon As IRibbonUI)
    Set objRibbon = ribbon
End Sub

Public Sub onAction_Commands(controls As IRibbonControl, ByRef returnValue)

If Environ("USERNAME") = "Ewald" Then
   returnValue = False
Else
   returnValue = True
   MsgBox "Aktion nicht zugelassen", 64, "Hinweis"
End If

End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 15
Arbeite einfach mal meinen RibbonX-Workshop von Anfang bis Ende durch. Der ist leicht verständlich und in deutscher Sprache. Da steht alles was es zu wissen gibt.

Anzeige
AW: Nachtrag
13.10.2014 23:59:22
Ewald
Hallo Rene,
habe es jetzt hinbekommen, war wirklich die Schreibweise









das Makro
Sub GetEnabledMacro(control As IRibbonControl, ByRef Enabled)
If MyTag = "Enable" Then
Enabled = True
Else
If control.Tag Like MyTag Then
Enabled = True
Else
Enabled = False
End If
End If
End Sub
Jetzt bleibt noch die Tastenkombi ausschalten und das Aufziehen mit der Maus.
Denn obwohl Einblenden nicht mehr möglich ist, läßt sich die ausgeblendete Spalte mit der Maus aufziehen.
Gruß Ewald

Anzeige
AW: Nachtrag
14.10.2014 05:05:38
mumpel
Dann musst Du noch einen Blattschutz setzen.

AW: Nachtrag
14.10.2014 15:33:28
Ewald
Hallo Rene,
und genau das soll nicht geschehen.
ich hatte eine 2007 er Exceldatei gesehen, da konnte auch ohne Blattschutz keine ausgeblendete Spalte wieder eingeblendet werden. Leider finde ich die nicht mehr.
Deshalb hier der Versuch, das auch in 2010 hinzubekommen.
Gruss Ewald

Anzeige
AW: Nachtrag
14.10.2014 20:00:21
mumpel
Ich kann mir nicht vorstellen dass man in Office 2007 ohne Blattschutz die Spalten und Zeilen vor dem Ausblenden/Einblenden schützen konnte. Man kann nämlich sehr wohl alles Ausblenden/Einblenden (manuell und per VBA.) wenn kein Blattschutz vorhanden ist und die Befehle nicht deaktiviert sind. Wer weiss wie der Programmierer dieser Datei den Schutz gewährleistet hat.

Anzeige
AW: Menueeintag deaktivieren
09.10.2014 14:07:35
Adis
Hallo Kasimir
Danke, was dazu gelernt. Ich habe Excel 2003 auf diesem PC. Mit Ribbon kenne ich mich
nicht aus. Die Info hatte ich übersehen. Schade das es im neuen Excel nicht mehr klappt.
Gruss Adis
;
Anzeige
Anzeige

Infobox / Tutorial

Menueeintag deaktivieren in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.
  3. Gib den folgenden Code ein:
    Private Sub Workbook_Activate()
       Application.CommandBars("Start").Controls("Format").Controls("Ausblenden & Einblenden").Controls("Spalten Einblenden").Enabled = False
    End Sub
  4. Schließe den VBA-Editor und speichere deine Änderungen.
  5. Teste die Änderungen: Gehe zurück zu Excel und überprüfe, ob "Spalten einblenden" deaktiviert ist.

Häufige Fehler und Lösungen

  • Laufzeitfehler 5: Dieser Fehler tritt häufig auf, wenn der Befehl oder die Steuerung nicht vorhanden ist. Stelle sicher, dass der genaue Name der Steuerung verwendet wird.
  • Funktioniert nicht in Excel 2010: Der Code von älteren Excel-Versionen (z. B. Excel 2003) funktioniert möglicherweise nicht. Stattdessen musst du RibbonX verwenden, um das Menüband zu steuern.

    Beispiel:

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
      <commands>
          <command idMso="ColumnsHide" enabled="false"/>
      </commands>
    </customUI>

Alternative Methoden

  • RibbonX verwenden: Ab Excel 2007 wird empfohlen, RibbonX zu nutzen, um das Excel-Menüband anzupassen. Hier kannst du spezifische Befehle deaktivieren oder umleiten.

    Beispiel für das Ausblenden von Spalten:

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
      <commands>
          <command idMso="ColumnsUnhide" enabled="false"/>
      </commands>
    </customUI>
  • Makros verwenden: Du kannst auch Makros nutzen, um die Sichtbarkeit von Menüs dynamisch zu steuern.


Praktische Beispiele

  • Um das Menü "Extras" auszublenden:

    Application.CommandBars("Extras").Enabled = False
  • Wenn du ein ganzes Menüband ausblenden möchtest:

    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"", False)"
  • Beispiel für die Verwendung von imagemso:

    <command idMso="ColumnsHide" imageMso="ColumnsHide" enabled="false"/>

Tipps für Profis

  • Fehlerprüfung aktivieren: Aktiviere die Fehlerprüfung in Excel, um mögliche Probleme frühzeitig zu erkennen. Gehe zu Datei > Optionen > Erweitert und aktiviere "Fehler in Benutzeroberflächen-Add-Ins anzeigen".
  • Verwende die richtige Schreibweise: Achte darauf, dass die Schreibweise von IDs und Befehlen exakt stimmt, um Laufzeitfehler zu vermeiden.
  • Dokumentiere deine Änderungen: Halte fest, welche Befehle du deaktivierst, um später mögliche Anpassungen leichter vornehmen zu können.

FAQ: Häufige Fragen

1. Warum funktioniert mein VBA-Code nicht? Stelle sicher, dass du den genauen Namen der Steuerung verwendest und dass sie in deiner Excel-Version verfügbar ist.

2. Kann ich das Menüband in Excel 2010 wie in Excel 2003 steuern? In Excel 2010 und späteren Versionen wird empfohlen, RibbonX zu verwenden, da es keine Unterstützung mehr für die Steuerung über Application.CommandBars gibt.

3. Wie kann ich das Einblenden von Spalten vollständig verhindern? Setze den Blattschutz oder verwende RibbonX, um die entsprechenden Befehle zu deaktivieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige