激活特定的功能区选项卡

时间:2014-01-15 13:48:14

标签: excel vba excel-vba ribbon

我已经看到很多关于如何ActivateTab OnLoad的代码但却无法让它动态地工作......例如,点击工作表按钮。

Sheet1上有一个按钮,指向 startHereConfigure

<customUI onLoad="RibbonOnLoad"
    xmlns="http://schemas.microsoft.com/office/2009/07/customui">

Public Rib As IRibbonUI
Sub RibbonOnLoad(ribbon As IRibbonUI)

    Set Rib = ribbon

End Sub

Sub startHereConfigure()

    Rib.ActivateTab "Configure"

End Sub

我希望能够调用startHereConfigure(以及其他类似的subs)来突显特定的Tab - 我该怎么做?

3 个答案:

答案 0 :(得分:3)

customUI onLoad="RibbonOnLoad"
    xmlns="http://schemas.microsoft.com/office/2009/07/customui">

Public Rib As IRibbonUI
Sub RibbonOnLoad(ribbon As IRibbonUI)

    Set Rib = ribbon

    Rib.ActivateTab "Configure"

End Sub

答案 1 :(得分:0)

豪尔赫的答案是正常的方式。

我在这里介绍其他两种解决方法。

一个是将“自定义”标签控件移到“首页”标签之前 通过在您的customui(14).XML中添加'insertBeforeMso'。

<tab id="id1" label="Tab1" insertBeforeMso="TabHome">

您的“ Tab1”是第一个,因此在打开您的Office文件时会首先被激活。

另一个正在使用SendKey方法,这有点棘手。 在customui XML中添加onLoad宏后, 您可以在VBE的模块中添加以下行。

Sub onLoad(control As IRibbonUI)
    'control.ActivateTab "Tab1"
    Application.SendKeys "%Y%"   'Alt + Y + Alt key
End Sub

在这里,“ Y”键是您的自定义标签快捷键,在“ Y”键之后再次发送“ Alt”键是为了防止Alt快捷键出现在功能区菜单上。

答案 2 :(得分:0)

塞缪尔·刘(Samuel Liew):我认为我的回答方式足够隐含。 以下内容进行了相同的扩展以更明确:

Sean:从上面不清楚,您是否已得到答案或自己解决了。 如此,我看不到答案,您的最后一条评论建议您从虚假信息中脱身。

当然,您的代码应该可以在2010 Office系统中使用。 我只是在这样做,并根据活动的目标工作表“类型”激活了一系列不同的选项卡。标签激活代码只是常规工作簿事件处理子部分(即由应用程序事件处理程序调用)的一部分。 从您问这个问题开始,这种操作就一直有效。

因此,上述Siddharth Rout关于无法执行此操作的响应无效。

我假设您的Tab ID是在xml中定义的,以匹配上面每个代码中的ID:

<tab id="Configure" label="YOUR LABEL" >

我还假设您的xml其余部分正确无误,您可以看到该标签,只是无法激活它。

如果是这样,那么关于“操作方法”:您只需要调用该子程序即可。 就我而言,我在激活的工作簿或工作表上(在打开或更改窗口时)执行此操作。但是任何呼叫机制(例如工作表内控件)也应该可以正常工作。

顺便说一句,我建议为功能区控件ID使用更明显的唯一代码 例如使用整体功能和控件类型(如“ xyzTab_Configure”)中的一些前导字符。 只是意味着,如果/当您添加更多时,您可以通过明确的方式知道哪个是哪个,并避免任何冲突。

涵盖的全部内容:但是我遇到了Office 2019的问题。 参见:vba IRibbonUI.ActivateTab not working in Office 2019