我已经看到很多关于如何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 - 我该怎么做?
答案 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