【问题标题】:Activate a particular Ribbon Tab激活特定的功能区选项卡
【发布时间】:2019-06-21 23:13:59
【问题描述】:

我已经看到很多关于如何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)来突出一个特定的选项卡 - 我该怎么做?

【问题讨论】:

  • 谢谢,我怀疑。我希望 MS 能把他们的手指从他们的集体中抽出来,给我们很多人显然想要的东西......

标签: vba excel ribbon


【解决方案1】:

将此行添加到自定义 XML 文件中:

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

其中“RibbonOnLoad”是启动 Outlook 时要调用的函数的名称。

将此功能添加到标准模块中:

Public Rib As IRibbonUI

Sub RibbonOnLoad(ribbon As IRibbonUI)
   Set Rib = ribbon    
   Rib.ActivateTab "Configure" ' Name of the tab to activate    
End Sub

【讨论】:

  • 一般来说,如果答案包含对代码的用途的解释,以及为什么在不介绍其他人的情况下解决问题的原因,答案会更有帮助
【解决方案2】:

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

我在这里介绍另外 2 个解决方法。

一个是将您的自定义选项卡控件移到主页选项卡之前 通过在您的 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”键是您的自定义选项卡快捷键,“Alt”键在“Y”键之后再次发送,以防止 Alt 快捷键出现在功能区菜单上。

【讨论】:

  • 我推荐这个答案,特别是因为它很方便。
【解决方案3】:

Samuel Liew:我认为我的回答方式已经足够含蓄了。 以下是相同的扩展更明确:

肖恩:从上面不清楚你是否得到了答案或者你自己解决了。 因为,我看不到答案,而您的最后一条评论表明您提供了虚假信息。

当然,您的代码应该可以在 2010 办公系统中运行。 我正在这样做并根据目标工作表“类型”激活一系列不同的选项卡。并且选项卡激活代码只是一般工作簿事件处理子(即由应用程序事件处理程序调用)的一部分。 在你提出这个问题之前,这一直是可操作的。

所以上面 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多