Vba access 2010自定义功能区
我有一个调用vba命令的自定义功能区。当它出现时,我会收到错误消息Vba access 2010自定义功能区,vba,ms-access,ribbon,Vba,Ms Access,Ribbon,我有一个调用vba命令的自定义功能区。当它出现时,我会收到错误消息 Microsoft Access cannot run the macro or callback function [FUNCTION OR SUB] 其中,[FUNCTION或SUB]是我正在调用的函数或子名称 生成上述消息的代码示例如下: Public Function OnButtonPress2(ctl As IRibbonControl) MsgBox "OnButtonPress2" End Func
Microsoft Access cannot run the macro or callback function [FUNCTION OR SUB]
其中,[FUNCTION或SUB]
是我正在调用的函数或子名称
生成上述消息的代码示例如下:
Public Function OnButtonPress2(ctl As IRibbonControl)
MsgBox "OnButtonPress2"
End Function
其中,OnButtonPress2
在功能区的XML文件中作为按钮调用
onAction=“OnButtonPress2
上述内容适用于宏,因此可能不是功能区的xml
=======第2版
我已经用XML和模块创建了一个新的简单测试数据库,如下所示:
每项研究的结果如下:
Macro1-工作正常(它有一条弹出消息)
CommandOnAction2-msgbox“编译此函数时出错”
OnButtonPress2-msgbox“Microsoft Access无法运行宏或回调函数'OnButtonPress2'
在“Public gobjRibn As IRibbonUI”一行中,IRibbonUI没有自动完成,这让我相信有一个参考需要添加
XML(功能区名称为NewRibbon,设置为启动时打开)
我能够在Access 2010中重新创建您的问题,并通过将
函数
更改为子函数
使您的示例生效,如下所示:
Public Sub OnButtonPress2(ByVal control_ As IRibbonControl)
MsgBox "OnButtonPress2"
End Sub
顺便说一句,在搜索关于这个问题的信息时,我在另一个论坛上偶然发现了一条帖子。在其中,Albert D.Kallal讨论了使用
onAction=“=MyPublicFunctionName()”
作为回调的替代方法;也许你会发现这在某些情况下很有用。Gord,谢谢,我仍然有同样的问题,我在上面的===Version2下添加了一个新的示例,结果如下。一个可能很关键的问题是,声明中的IRibbonUI在“Public gobjRibn As”之后不会自动完成-我可能缺少引用,但不知道它应该是什么。您需要引用MSO.DLL。例如,在具有32位Office 2010(=Office 14)的64位计算机上:C:\Program Files(x86)\Common Files\Microsoft Shared\OFFICE14\MSO.DLL
Option Compare Database
Public gobjRibn As IRibbonUI
Public Function CommandOnAction2(ByVal ctl As IRibbonControl)
MsgBox "Function CommandOnAction2"
End Function
Public Sub OnButtonPress2(ByVal ctl As IRibbonControl)
MsgBox " Sub OnButtonPress2"
End Sub
Public Sub OnButtonPress2(ByVal control_ As IRibbonControl)
MsgBox "OnButtonPress2"
End Sub