【发布时间】:2013-05-07 16:17:03
【问题描述】:
我有一个调用 vba 命令的自定义功能区。当它发生时,我收到错误消息
Microsoft Access cannot run the macro or callback function [FUNCTION OR SUB]
[FUNCTION OR 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,设置为在启动时打开)
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
<tabs>
<tab id="tab1" label="Your Custom Tab">
<group id="group1" label="Your Custom Group">
<button id="SampleButton" label="Macro1" onAction="Macro1" />
<button id="SampleButton2" label="CommandOnAction2" onAction="=CommandOnAction2()" />
<button id="SampleButton3" label="OnButtonPress2" onAction="OnButtonPress2" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
模块(名称为 modRibbon)
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
【问题讨论】: