我有一个带有几个自定义功能区选项卡的Excel工作簿。单击特定的自定义功能区选项卡时,我想激活指定的工作表。
详细信息: 由5张纸组成的工作簿具有以下附加功能区选项卡:“参数”和“数据分析”。每个选项卡都有几组控件。我需要添加触发器(宏?),仅当用户选择“数据分析”选项卡时,该触发器才会自动将工作表更改为Sheet3(以运行ActiveWorkbook.Sheets(“ Sheet3”)。Activate)。
我将不胜感激。
答案 0 :(得分:1)
可以使用功能区中的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
唯一的问题是,通常只有在第一次单击选项卡时才会调用此代码。为了使代码重新运行,我认为您需要使功能区控件无效。为此,您必须在初始化时将功能区存储在全局作用域变量中。我上次检查时可能需要一种解决方法,例如在工作表中存储功能区地址。关于Stack,有很多问题,例如:this one。