如何通过更改功能区选项卡来触发宏?

时间:2020-04-28 16:34:37

标签: excel vba tabs ribbon

我有一个带有几个自定义功能区选项卡的Excel工作簿。单击特定的自定义功能区选项卡时,我想激活指定的工作表。

详细信息: 由5张纸组成的工作簿具有以下附加功能区选项卡:“参数”和“数据分析”。每个选项卡都有几组控件。我需要添加触发器(宏?),仅当用户选择“数据分析”选项卡时,该触发器才会自动将工作表更改为Sheet3(以运行ActiveWorkbook.Sheets(“ Sheet3”)。Activate)。

我将不胜感激。

1 个答案:

答案 0 :(得分:1)

可以使用功能区中的getVisible回调来实现所需的功能。
这是一个xml标签的示例(应嵌套在CustomUIribbon标签中)

<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