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

问题描述 投票:1回答:2

我有一本Excel工作簿,其中包含几个自定义功能区标签。单击特定的自定义功能区选项卡时,我想激活指定的工作表。

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

我将不胜感激。

excel vba tabs ribbon
2个回答
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


0
投票

[使用“简易色带构建器”,我做了以下工作。该短片介绍了如何使用软件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

结束子

© www.soinside.com 2019 - 2024. All rights reserved.