在 Excel 2019 中应用 IRibbonUI.ActivateTab

Spi*_*ner 5 excel vba

我有现有的 VBA 代码(我的)在 Excel 2010 中工作,可激活自定义功能区选项卡:IRibbonUIObjectName.ActivateTab "tabID"

该代码作为子程序中的标准操作存在,用于处理活动窗口的更改(在相关时激活选项卡)。

相同的代码无法在 Excel 2019 中运行。在运行时,会引发异常

'无效的调用或参数'

该代码通过了语法检查,并且我通过让 VBA 提示我重建了该行。

即输入:“IRibbonUIObjectName”。并让编辑器提供ActivateTab(确认对象有效性)。

我已阅读当前的 Office 开发文档,语法没有改变。

核心问题:

1) 自 2010 年以来有什么变化吗?

2)这个方法在Excel 2019中如何应用?如何调用执行该方法的子程序?确切的语法是什么?


附加信息:

该选项卡及其控件的所有其他功能的功能与 2010 系统中的功能相同。

我在执行之前检查功能区对象:

If Not mobQSRibbon Is Nothing Then mobQSRibbon.ActivateTab "plTAB_QuoteSystem" 
Run Code Online (Sandbox Code Playgroud)

名称空间:

customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="ModuleName.SubName" >
Run Code Online (Sandbox Code Playgroud)

附加信息2:

进一步的测试表明,这个问题不仅仅是语法问题。

该方法有时有效。具体来说:

1) 打开工作簿后执行该方法会导致异常 - 即在处理作为工作簿打开部分触发的 WorkbookActivate 事件时执行 ActivateTab。

2) 在处理仅切换到已打开的工作簿而触发的 WorkbookActivate 事件时执行该方法不会导致异常。

3) 同样,在处理 SheetActivate 事件时仅通过切换工作表执行该方法不会导致异常。

因此,该问题似乎与 Excel 处理功能区、打开工作簿后的方式发生了变化有关。

Chr*_*isB 0

一种解决方法是更改​​功能区 XML,将自定义功能区插入带有insertBeforeMso="TabHome. 打开文件时,Office 会自动激活第一个功能区。

<tab id="YourTabIdHere" label="YourLabelHere" insertBeforeMso="TabHome">
Run Code Online (Sandbox Code Playgroud)