【问题标题】:VBA error 'Wrong number of arguments or invalid property assignments' when running macro via custom button通过自定义按钮运行宏时 VBA 错误“参数数量错误或属性分配无效”
【发布时间】:2013-03-02 19:30:39
【问题描述】:

我有一个宏,我通过自定义 UI 编辑器添加的选项卡/组/按钮调用 -

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="tabCustomActions" label="Custom ActionsXXX" insertAfterMso="TabDeveloper">
                <group id="GroupTLA" label="TLA Actions">
                    <button id="buttonFormatTLA" label="Format as TLA" image="TLALogo" size="large" onAction="start_tla" />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

该按钮显示得很好,带有我的自定义徽标,但是当我单击该按钮时,我会收到以下错误 -

出现此错误后未打开 VBA,通常情况下,如果我打开开发人员控制台然后尝试单击按钮,则 VBA 中的代码不会被指示为问题。

但奇怪的是,如果我尝试手动运行宏,它可以正常工作,没有错误。有人知道如何解决这个问题吗?

这是我在Pastebin 中的完整代码,如果您想查看的话。谢谢。

【问题讨论】:

  • VBA IDE 无法打开,因为您没有运行 VBA,这是一个宏,对吗?当您“手动运行”时,VBA 中运行的是什么代码?
  • Brad:在 Excel 和其他办公产品中,VBA = 宏。同样的事情。

标签: vba tabs ribbon ms-word word-2007


【解决方案1】:

您的 VBA 代码中 start_tla 回调的调用签名有误。

如果您在自定义 UI 编辑器中打开文件,菜单右侧会出现一个名为 Generate Callbacks 的按钮。如果您按下它,它将为您的 VBA 代码提供正确的回调,以匹配文件中的功能区 xml:

'Callback for buttonFormatTLA onAction
Sub start_tla(control As IRibbonControl)
    'Your code goes here
End Sub

根据 Pastebin 链接,您的 sub 看起来像这样,没有 control As IRibbonControl 参数:

Public Sub start_tla()

【讨论】:

  • 完美,谢谢。我实际上创建了一个通用的on_customUI_action 回调函数,然后检查按下了哪个按钮。如果我也手动运行宏,那么宏就可以工作。谢谢。
  • 就我而言,我在另一个打开的Add-In 中有相同的模块名称。在我为模块指定唯一名称后,此错误已消失。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多