我有现有的 VBA 代码(我的)在 Excel 2010 中工作,可激活自定义功能区选项卡:IRibbonUIObjectName.ActivateTab "tabID"
该代码作为标准操作存在于处理事件窗口更改的子程序中(以在相关时激活选项卡)。
相同的代码不会在 Excel 2019 中运行。在运行时,会引发异常
'invalid call or argument'
代码通过了语法检查,我通过让 VBA 提示我重新构建了该行。
即类型:'IRibbonUIObjectName。'并让编辑器提供 ActivateTab(确认对象有效性)。
我已经阅读了当前的 office 开发文档,并且语法没有改变。
核心问题:
1) 自 2010 年以来有什么变化吗?
2) 这种方法如何在 Excel 2019 中应用?如何调用执行该方法的子程序?确切的语法是什么?
附加信息:
选项卡及其控件的所有其他功能与 2010 系统中的功能相同。
我在执行之前检查功能区对象:
If Not mobQSRibbon Is Nothing Then mobQSRibbon.ActivateTab "plTAB_QuoteSystem"
命名空间:
customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="ModuleName.SubName" >
附加信息2:
进一步的测试表明这个问题不仅仅是一个语法问题。
该方法有时有效。具体来说:
1)打开工作簿后执行方法导致异常
- 即通过在处理作为工作簿的一部分打开而触发的 WorkbookActivate 事件时执行 ActivateTab。
2) 在处理仅通过切换到已打开的工作簿而触发的 WorkbookActivate 事件时执行该方法,不会导致异常。
3) 同样,在处理 SheetActivate 事件时仅通过切换工作表执行该方法不会导致异常。
所以这个问题似乎与 Excel 处理功能区的方式发生了变化有关,打开后工作簿。
最佳答案
一种解决方法是使用 insertBeforeMso="TabHome
更改您的功能区 XML 以在任何其他功能区之前插入您的自定义功能区。 . Office 会在打开文件时自动激活第一个功能区。
<tab id="YourTabIdHere" label="YourLabelHere" insertBeforeMso="TabHome">
关于excel - 在 Excel 2019 中应用 IRibbonUI.ActivateTab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623675/