Можно использовать обратный вызов getVisible
с ленты для достижения того, что вы ищете.
Вот пример xml
для вкладки (она должна быть вложена в CustomUI
и ribbon
тэги)
<tabs>
<tab id="ExampleTab" label="Example Tab">
<group id="ExampleGroup"
label="Example Group"
getVisible="GetVisibility"
tag="1"
>
</group>
</tab>
</tabs>
Когда кто-то нажимает на вкладку, этот xml
вызовет подпункт GetVisibility
в книге, которой он принадлежит. Вы можете использовать свойство tag
для передачи переменной в Sub. Например, каждая вкладка может иметь свой собственный тег или может использоваться для чего-то другого.
Теперь приведен пример кода для GetVisibility
:
Public Sub GetVisibility(Control As IRibbonControl, ByRef Visible)
'your code to activate the worksheet can go here
Visible = True 'if you want to make a control visible
Select Case Control.Tag 'you can use Control.Tag to get a variable from ribbon
Case "1"
Case Else
End Select
End Sub
Единственная проблема заключается в том, что этот код обычно вызывается только при первом нажатии на вкладку. Чтобы получить код для повторного запуска, я думаю, что вам нужно аннулировать контроль ленты. Для этого вам придется хранить вашу ленту в глобальной переменной видимости при инициализации. В последний раз, когда я проверял, вам может потребоваться обходной путь, например, сохранение адреса ленты в листе. В стеке есть ряд вопросов по этому поводу, например: этот .