Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Menueeintag deaktivieren

Betrifft: Menueeintag deaktivieren von: Ewald
Geschrieben am: 08.10.2014 23:50:47

Hallo,

im Menue Start/Format/Ausblenden & Einblenden/ soll "Spalten einblenden" deaktiviert werden.

Nur wie ???

Gruß Ewald

  

Betrifft: AW: Menueeintag deaktivieren von: Adis
Geschrieben am: 09.10.2014 00:13:45

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


  

Betrifft: AW: Menueeintag deaktivieren von: Ewald
Geschrieben am: 09.10.2014 01:03:06

Hallo Adis,

leider nicht Laufzeitfehler 5

Gruß Ewald


  

Betrifft: AW: Menueeintag deaktivieren von: Kasimir
Geschrieben am: 09.10.2014 11:45:47

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


  

Betrifft: AW: Menueeintag deaktivieren von: Ewald
Geschrieben am: 09.10.2014 13:26:12

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


  

Betrifft: AW: Menueeintag deaktivieren von: mumpel
Geschrieben am: 09.10.2014 19:01:49

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é


  

Betrifft: AW: Menueeintag deaktivieren von: Ewald
Geschrieben am: 09.10.2014 23:08:40

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


  

Betrifft: AW: Menueeintag deaktivieren von: mumpel
Geschrieben am: 10.10.2014 11:50:40

Was genau meinst Du mit "Ansicht und Sicherheit" und "Ausblenden und einblenden"? In dieser Art gibt es das bei mir nicht.


  

Betrifft: AW: Menueeintag deaktivieren von: Ewald
Geschrieben am: 10.10.2014 13:15:45

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


  

Betrifft: AW: Menueeintag deaktivieren von: mumpel
Geschrieben am: 10.10.2014 16:43:27

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.


  

Betrifft: AW: Menueeintag deaktivieren von: Ewald
Geschrieben am: 11.10.2014 23:36:47

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


  

Betrifft: AW: Menueeintag deaktivieren von: mumpel
Geschrieben am: 12.10.2014 19:31:51

Ü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



  

Betrifft: AW: Menueeintag deaktivieren von: Ewald
Geschrieben am: 13.10.2014 01:23:23

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


  

Betrifft: AW: Menueeintag deaktivieren von: mumpel
Geschrieben am: 13.10.2014 09:35:13

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.


  

Betrifft: AW: Menueeintag deaktivieren von: Ewald
Geschrieben am: 13.10.2014 10:31:04

Hallo Rene,

dann wird folgennde Meldung angezeigt



obwohl im UI keine Fehlermeldung kommt.

Wenn ich dann versuche dort FormatCellsMenu einzutragen, meckert der UI

Gruß Ewald


  

Betrifft: AW: Menueeintag deaktivieren von: mumpel
Geschrieben am: 13.10.2014 10:49:21

Dann musst Du etwas falsch gemacht haben. Poste mal die fehlerhafte Datei.


  

Betrifft: Nachtrag von: mumpel
Geschrieben am: 13.10.2014 10:52:00

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


  

Betrifft: AW: Nachtrag von: Ewald
Geschrieben am: 13.10.2014 11:35:13

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


  

Betrifft: AW: Nachtrag von: mumpel
Geschrieben am: 13.10.2014 11:48:10

<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.


  

Betrifft: AW: Nachtrag von: Ewald
Geschrieben am: 13.10.2014 14:27:24

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


  

Betrifft: AW: Nachtrag von: mumpel
Geschrieben am: 13.10.2014 16:29:39

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.


  

Betrifft: AW: Nachtrag von: Ewald
Geschrieben am: 13.10.2014 23:59:22

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


  

Betrifft: AW: Nachtrag von: mumpel
Geschrieben am: 14.10.2014 05:05:38

Dann musst Du noch einen Blattschutz setzen.


  

Betrifft: AW: Nachtrag von: Ewald
Geschrieben am: 14.10.2014 15:33:28

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


  

Betrifft: AW: Nachtrag von: mumpel
Geschrieben am: 14.10.2014 20:00:21

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.


  

Betrifft: AW: Menueeintag deaktivieren von: Adis
Geschrieben am: 09.10.2014 14:07:35

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


 

Beiträge aus den Excel-Beispielen zum Thema "Menueeintag deaktivieren"