1

使用 customUI 工具将选项卡添加到 Excel 2013 xlsm 工作簿。我正在运行 Windows 7。CustomUI 给了我绿灯(“自定义 UI XML 格式正确!”),并生成回调代码。打开工作簿时会出现新选项卡、新组和新按钮。我将回调代码添加到 VBA 中的 module1。但是当我点击新按钮时,我收到了消息

“无法运行宏 'AddNodeNew'。此工作簿中可能没有该宏,或者所有宏都可能被禁用。”

好吧,宏 AddNodeNew 可用,并且宏未被禁用。那么发生了什么?注意:xlsm 工作簿已经包含许多其他宏(没有一个名为 AddNodeNew)。

我想在此处包含代码,但您的系统不允许我 - 一直告诉我我没有将其正确格式化为代码。但是我确实按它要求的 4 个空格缩进了所有内容,但仍然没有骰子。关于这个主题的帮助不足。

4

1 回答 1

-1

显然 RibbonX 自定义 UI 元素可以调用存储在 VBA 项目的 ThisWorkbook 部分中的宏,但是我还没有弄清楚如何从模块中调用宏,然后我才知道我什至不想这样做,因为当一个模块被重命名时,我会需要在自定义 UI 中调整引用。

所以你可以做的是在 ThisWorkbook 中创建一个调用者,然后调用该函数。我的解决方案是将被调用的函数名称放入 xml 元素 id 属性中,然后在 ThisWorkbook 中有一个 Caller 函数,由所有自定义控件调用。调用时,调用者读取控件 ID 属性并使用该名称调用另一个函数,而不管其物理位置如何。

Public Sub Caller(ctrl As IRibbonControl)
    Dim sFunction As String: sFunction = ctrl.ID
    Application.Run sFunction
End Sub
于 2020-02-08T19:58:31.183 回答