Ukryj indywidualne niestandardowe przyciski wstążki
Mam niestandardową wstążkę Excela i dodatek Excel, który zawiera klasę, która jest tworzona raz podczas otwierania skoroszytu. W oparciu o niektóre atrybuty klasy muszę ukryć niektóre przyciski z niestandardowej wstążki (wszystko na tej samej karcie).
Moja niestandardowa wstążka to:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="loadCustom">
<ribbon>
<tabs>
<tab id="tab1" label="customTab" getVisible="GetVisible" tag="myTab">
<group id="grp1" label="Group1" imageMso="ViewFullScreenView" getVisible="GetVisible">
<button id="Bt1" size="large" label="Button1" imageMso="AccessListIssues" onAction="runBt1" visible="true"/>
<button id="Bt2" size="large" label="Button2" imageMso="AccessListTasks" onAction="runBt2" visible="true"/>
<button id="Bt3" size="large" label="Button3" imageMso="ControlLayoutStacked" onAction="runBt3" visible="true"/>
<button id="Bt4" size="large" label="Button4" imageMso="ControlLayoutTabular" onAction="runBt4" visible="true"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Następnie mam następujące makra VBA w module, aby załadować niestandardową wstążkę i / lub ją wyłączyć:
Public Sub loadCustom(ribbon As IRibbonUI)
Set RibUI = ribbon
If workbookTitle = "myWorkbook" Then
MyTag = "show"
Else
MyTag = False
RefreshRibbon MyTag
End If
End Sub
Sub GetVisible(control As IRibbonControl, ByRef visible)
If MyTag = "show" Then
visible = True
Else
If control.Tag Like MyTag Then
visible = True
Else
visible = False
End If
End If
End Sub
Sub RefreshRibbon(Tag As String)
MyTag = Tag
If RibUI Is Nothing Then
MsgBox "Error, Save/Restart your workbook"
Else
RibUI.Invalidate
End If
End Sub
W moim specjalnym skoroszycie, który powinien ładować wstążka, mam ukryty arkusz, z którego moja klasa modułu klasy odczytuje wartość dla każdego przycisku, aby określić, czy powinien on pokazywać, czy nie. Po przeczytaniu tej wartości mogę ukryć pojedynczy przycisk? Wszystkie znalezione przykłady wydają się działać tylko dla kart. Czy mogę przekazać ribbonUI do klasy i przejść przez każdą kontrolkę? Nie udało mi się znaleźć metody na to. Dzięki za pomoc!