Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
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
Inhaltsverzeichnis

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

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

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é

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

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

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.

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

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

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.

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige