RibbonX OnAction:参数数量错误或属性赋值无效



我正在使用Andy Pope的RibbonX Visual Designer 2010加载项来创建自定义选项卡、组和按钮。我已经在XLAM工作簿中有了各种各样的宏作为VBA代码,该工作簿将在启动时打开。我遇到的问题是,我不知道如何从这些按钮中的任何一个调用该过程。RibbonX可视化设计器为带有OnAction字段的按钮提供了属性窗体。我试过

程序名称

"程序名称";

"'spreadsheetname.xlam'!程序名称";

我得到的只是一条错误消息";参数数目错误或属性赋值无效;。这个过程不需要任何参数,所以这不是问题所在。所附的图像显示了属性表单的外观和OnAction字段。

带有OnAction字段的属性表单

有人能给我一个关于这里的程序调用形式的线索吗?

我应该更仔细地阅读你的问题。关键是"这个过程不需要任何参数">

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

NumberFormatTwoDecimals

对于OnAction,以及确保您的子声明如下

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

Excel希望您为control参数留出空间,它会系统地将该参数传递给您指定的子参数,即使您没有使用该参数。

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

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)

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

  • 为开发人员自定义2007 Office Fluent功能区(第1部分,共3部分(
  • 为开发人员自定义2007 Office Fluent功能区(第2部分,共3部分(
  • 为开发人员自定义2007 Office Fluent功能区(第3部分,共3部分(

最新更新