RibbonX OnAction:参数数量错误或分配无效 属性

RibbonX OnAction: Wrong number of arguments or invalid property assignment

我正在使用 Andy Pope 的 RibbonX Visual Designer 2010 加载项来创建自定义选项卡、组和按钮。我已经在将在启动时打开的 XLAM 工作簿中将各种宏作为 VBA 代码。我遇到的问题是我无法弄清楚如何从这些按钮中的任何一个调用该过程。 RibbonX Visual Designer 为带有 OnAction 字段的按钮提供 属性 表单。我试过了

程序名称

“程序名称”

"'spreadsheetname.xlam'!ProcedureName"

我得到的只是一条错误消息“参数数量错误或 属性 赋值无效”。 这个过程没有参数,所以这不是问题。所附图片显示了 属性 表单的外观和 OnAction 字段。

Property form with OnAction Field

谁能告诉我这里过程调用的形式?

我应该更仔细地阅读你的问题。关键是 "This procedure takes no arguments".

在功能区编辑器中,只需提供

NumberFormatTwoDecimals

对于 OnAction,并且 确保您的潜艇声明如下:

Public Sub NumberFormatTwoDecimals(control As IRibbonControl)
    'Your code goes here...
End Sub

Excel 希望您为 control 参数腾出空间,它会系统地传递给您指定的 sub,即使您对所述参数没有任何用处。

开发人员经常在许多 OnAction 属性中为不同的控件指定相同的子项,因为一旦在他们的子项中,他们就可以检查 ID and/or Tag 属性 的 control 参数来决定做什么:

Public Sub MyActionHandler(control As IRibbonControl)
    Select Case control.ID
        Case "MyButton1": HandleMyButton1
        Case "MyButton2": HandleMyButton2
        Case Else: MsgBox "?!?"
    End Select
End Sub

使用后一种方法,您不必修改现有代码库来适应 control 参数。

对于功能区按钮,回调应如下所示:

C#: void OnAction(IRibbonControl control)

VBA: Sub OnAction(control As IRibbonControl)

C++: HRESULT OnAction([in] IRibbonControl *pControl)

Visual Basic: Sub OnAction(control As IRibbonControl)

您可以在以下文章中为所有类型的功能区控件描述所有回调: