Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1308to1312
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

Ribbon ansprechen

Ribbon ansprechen
06.05.2013 16:20:37
Marc
Hallo zusammen,
ich habe vor kurzen schon Mal zu diesem Thema geschrieben. Inzwischen habe ich mir dank eurer Hilfe und dank der Internetsuche das meiste zusammengesucht. Ich habe aber noch ein Problem dabei den letzten Schritt zu tun.
Mein Ziel ist es, das Kontextmenü Ply auszublenden und nur auf Knopfdruck hin wieder einzublenden.
Hier ist der dazu gehörige XML Code



















Damit habe ich mir ein eigenes Kontextmenü erstellt, welches auch, wenn es sichtbar ist, funktioniert.
Mit dem folgenden VBA Code will ich die Elemente einzeln sichtbar machen können. Exemplarisch soll hier nur ein Element sichtbar gemacht werden. Die weiteren Elemente kommen später hinzu.
Sub MakeVisible()
Dim myCb As CommandBar
Dim ctrl As IRibbonControl
Set myCb = Application.CommandBars("ply")
Set ctrl = myCb.FindControl(ID:=889)'Dies ist der Menüpunkt "Umbenennen".
Call setVisible(ctrl, False)
End Sub
Sub setVisible(ByVal control As IRibbonControl, ByVal vis As Boolean)
vis = True
control.visible = vis
End Sub
Leider gibt mir Excel den Laufzeitfehler 13 zurück und behauptet, dass die Variable ctrl = Nothing ist. Ich nehme an, ich habe nicht den richtigen Code, um diese Variable zu füllen. Könnt Ihr mir helfen den richtigen Code für die Zeile:
Set ctrl = myCb.FindControl(ID:=889)
zu finden?
Vielen Dank schonmal im Voraus!
Liebe Grüße,
Marc

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ribbon ansprechen
06.05.2013 16:26:27
Marc
Nochmal der Versuch den XML Code zu posten:
customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
ribbon startFromScratch="false" /
contextMenus
contextMenu idMso="ContextMenuWorkbookPly"
button visible="false" enabled="true" idMso="SheetInsertPage" label="Einfügen..." showLabel="false" /
button visible="false" enabled="true" idMso="SheetDelete" label="Löschen" showLabel="false" /
button visible="false" enabled="true" idMso="SheetRename" label="Umbenennen" showLabel="false" /
button visible="false" enabled="true" idMso="SheetMoveOrCopy" label="Verschieben oder kopieren..." showLabel="false" /
button visible="false" enabled="true" idMso="ViewVisualBasicCode" label="Code anzeigen" showLabel="false" /
button visible="false" enabled="true" idMso="SheetProtect" label="Blatt schützen..." showLabel="false" /
gallery visible="false" enabled="true" idMso="SheetTabColorGallery" label="Registerfarbe" showLabel="false" /
button visible="false" enabled="true" idMso="SheetTabColorMoreColorsDialog" label="Weitere Farben..." showLabel="false" /
button visible="false" enabled="true" idMso="SheetHide" label="Ausblenden" showLabel="false" /
button visible="false" enabled="true" idMso="SheetUnhide" label="Einblenden" showLabel="false" /
button visible="false" enabled="true" idMso="SelectAllSheets" label="Alle Blätter auswählen" showLabel="false" /
button visible="false" enabled="true" idMso="UngroupSheets" label="Gruppierung aufheben" showLabel="false" /
/contextMenu
/contextMenus
/customUI

Anzeige
AW: Ribbon ansprechen
06.05.2013 16:28:25
Rudi
Hallo,
Sub MakeVisible()
Dim myCb As CommandBar
Dim ctrl As CommandBarControl
Set myCb = Application.CommandBars("ply")
Set ctrl = myCb.FindControl(ID:=889) 'Dies ist der Menüpunkt "Umbenennen".
setVisible ctrl, True
End Sub
Sub setVisible(control As CommandBarControl, ByVal vis As Boolean)
'vis = True
control.Visible = vis
End Sub

Gruß
Rudi

darüber hinaus ...
06.05.2013 16:42:48
Rudi
Hallo,
würde ich das nicht per xml machen, sondern per VBA
Sub ausblenden()
Dim myCb As CommandBar
Dim ctrl As CommandBarControl
Set myCb = Application.CommandBars("ply")
With myCb
For Each ctrl In .Controls
ctrl.Visible = False
Next
End With
End Sub

Gruß
Rudi

Anzeige
AW: Ribbon ansprechen
06.05.2013 18:22:15
mumpel
Hallo!
Wie bereits erwähnt, musst Du mit getVisible arbeiten.
Der VBA-Code:
Der RibbonX-Code:
Gruß, René

AW: Ribbon ansprechen
07.05.2013 14:04:01
Marc
Hallo Mumpel,
vielen Dank für diesen Ansatz. Das wirft aber mein Konzept völlig über den Haufen. Ich ein Makro in der Datei, welches dem Kontextmenü einen Button hinzufügt. Das funktioniert super. Der Button ruft ein selbst gemachtes Formular auf. Dieses Formular fragt ein Passwort ab und bei richtiger Eingabe sollen die nicht sichtbaren Punkte eingeblendet werden sowie der hinzugefügte Button entfernt und gegen einen anderen ausgetauscht werden, der das Menü wieder verstecken kann.
Das funktioniert auch alles sehr gut, außer der Tatsache, dass die unsichtbaren Menüpunkte aus dem CustomUI nicht sichtbar werden. Nur dafür brauche ich eine Lösung. Mit dem Code, den Du gepostet hast, komme ich da aber nicht weiter.
Grüße,
Marc

Anzeige
AW: Ribbon ansprechen
07.05.2013 17:11:17
mumpel
Das ist doch gar kein Problem. Nutze eine Variable vom Typ Boolean. Diese wird mit einer Schaltfläche ein- oder ausgeschaltet, anschließend das Ribbon aktualisiert. Die Schaltfläche musst Du noch im RibbonX-Code integrieren, das mache ich jetzt nicht.
Das ist nur ein Beispielcode. Den musst Du natürlich für Dein Projekt umsetzen. Den Code für die Schaltfläche kannst Du auch in einer Formularschaltfläche nutzen, der ist nicht auf Ribbon-Callbacks beschränkt.

Nachtrag
07.05.2013 17:15:44
mumpel
Du kannst es natürlich auch per VBA machen, wie Rudi schon vorschlug. Die Kontextmenüs lassen sich auch weiterhin mit VBA beeinflussen.

Anzeige
AW: Nachtrag
07.05.2013 17:20:24
Marc
Hallo Mumpel,
nein, das Ply Menü eben nicht. Es lassen sich Teile hinzufügen. Aber die vorhandenen Einträge lassen sich nicht einfach ausblenden. Das Cells Menü lässt sich prima bearbeiten. Das Ply leider nicht. Ich brauche nur den Hinweis, wie ich aus dem VBA Code heraus die Sichtbarkeit der von mir erstellten Menüpunkte über das RibbonX mit der GetVisible Anweisung beeinflusse.
Grüße,
Marc

AW: Nachtrag
07.05.2013 18:24:52
mumpel
Das habe ich Dir doch schon aufgezeigt. Ist das so schwer zu verstehen?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige