RibbonX-Workshop - Sichtbarkeit der Elemente
Mit Hilfe der Attribute "getEnabled" und "getVisible" schränken wir die Sichbarkeit ein. Wichtig ist, dass "getEnabled" und "enabled" bzw. "getVisible" und "visible" nicht zusammen genutzt werden dürfen. Es kann immer nur eines der Attribute verwendet werden.
Zuerst das "getEnabled"-Attribut. Damit kann man z.B. das Element in Abhängigkeit zu einem Zellwert aktivieren oder deaktivieren.
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad_X1">
<ribbon>
<tabs>
<tab id="tab0" label="User">
<group id="grp0" label="User-Group">
<button id="btn0" label="Ein-Aus" getEnabled="getEnabled_Button1" imageMso="Bold" size="large" onAction="onAction_Button1" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Option Private Module
Option Explicit
Public objRibbon As IRibbonUI
Public Sub onLoad_X1(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
Public Sub onAction_Button1(control As IRibbonControl)
MsgBox "Button " & control.ID & " gedrückt", 64, "Hinweis"
End Sub
Public Sub getEnabled_Button1(control As IRibbonControl, ByRef returnValue)
If ThisWorkbook.Sheets("Tabelle4").Range("G8").Value = "Ja" Then returnValue = True
End Sub
Kommen wir zu "getVisible". Damit ist es z.B. möglich, dass das Element nur angezeigt wird, wenn ein bestimmter Benutzer angemeldet ist.
Für ein benutzerdefiniertes Element:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad_X1">
<ribbon>
<tabs>
<tab id="tab0" label="User">
<group id="grp0" label="User-Group">
<button id="btn0" label="Ein-Aus" getVisible="getEnabled_Button1" imageMso="Bold" size="large" onAction="onAction_Button1" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Option Private Module
Option Explicit
Public objRibbon As IRibbonUI
Public Sub onLoad_X1(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
Public Sub onAction_Button1(control As IRibbonControl)
MsgBox "Button " & control.ID & " gedrückt", 64, "Hinweis"
End Sub
Public Sub getVisible_Button1(control As IRibbonControl, ByRef returnValue)
If Environ("USERNAME") = "Max Mustermann" Then returnValue = True
End Sub
Deaktvieren von Standardtabs:
Dies verwenden wir wenn wir Standardtabs in Abhängigkeit von Benutzern ein- oder ausblenden wollen. startFromScratch darf in solchen Fällen nicht verwendet werden. Im Beispiel blenden wir das Tab "Start" aus.
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad" >
<ribbon>
<tabs>
<tab idMso="TabHome" getVisible="getVisible_Standardtabs" />
</tabs>
</ribbon>
</customUI>
Option Private Module
Option Explicit
Public objRibbon As IRibbonUI
Public Sub onLoad(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
Public Sub getVisible_StandardTabs(control As IRibbonControl, ByRef visible)
If Environ("USERNAME") = "Mumpel" Then visible = True
End Sub
Sichtbarkeit in Abhängigkeit zu einem anderen Element:
Natürlich kann man Elemente auch in Abhängigkeit zueinander schalten. Auch hier können Sie wählen wo Sie Die Zustände speichern möchten. In den Beispielcodes nutze ich eine Variable vom Typ Boolean
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad_01">
<ribbon>
<tabs>
<tab id="tab0" label="MyTab">
<group id="grp0" label="MyGroup">
<button id="btn0" onAction="onAction_01" getEnabled="getEnabled_01" size="large" imageMso="AutoDial" />
<button id="btn1" onAction="onAction_01" getEnabled="getEnabled_01" size="large" imageMso="FileSaveAs"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Option Private Module
Option Explicit
Public objRibbon As IRibbonUI
Public OnOff As Boolean
Public Sub onLoad_01(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
Public Sub getEnabled_01(control As IRibbonControl, ByRef returnValue)
Select Case control.ID
Case "btn0"
If Not OnOff Then returnValue = 1
Case "btn1"
If OnOff Then returnValue = 1
End Select
End Sub
Public Sub onAction_01(control As IRibbonControl)
Select Case control.ID
Case "btn0"
OnOff = True
Case "btn1"
OnOff = False
End Select
objRibbon.Invalidate
End Sub