我有一本Excel工作簿,其中包含几个自定义功能区标签。单击特定的自定义功能区选项卡时,我想激活指定的工作表。
详细信息:由5张纸组成的工作簿具有以下附加功能区选项卡:“参数”和“数据分析”。每个选项卡都有几组控件。我需要添加触发器(宏?),仅当用户选择“数据分析”选项卡时,该触发器才会自动将工作表更改为Sheet3(以运行ActiveWorkbook.Sheets(“ Sheet3”)。Activate)。
我将不胜感激。
可以使用功能区中的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。
[使用“简易色带构建器”,我做了以下工作。该短片介绍了如何使用软件https://youtu.be/LnzoMfAVZXM
Public Sub Button_Click(ButtonItem As Variant)
If ButtonItem.Label = "My button" Then
ThisWorkbook.Sheets("Sheet1").Activate
ElseIf ButtonItem.Label = "My button 2" Then
ThisWorkbook.Sheets("Sheet2").Activate
End If
结束子