VBA CommandBarButton不运行操作代码
按下按钮后,它不会执行操作方法定义的子程序 我已经检查了Access中的所有安全选项是否已启用,并以不同的方式编写了相同的代码 我尝试使用OnAction方法运行函数VBA CommandBarButton不运行操作代码,vba,ms-access,ms-access-forms,Vba,Ms Access,Ms Access Forms,按下按钮后,它不会执行操作方法定义的子程序 我已经检查了Access中的所有安全选项是否已启用,并以不同的方式编写了相同的代码 我尝试使用OnAction方法运行函数 Private Sub Check\u Status\u Click() 将cmdBAR设置为命令栏 将cmdButton1变暗为CommandBarButton Set cmdBAR=commandbar.Add(,msoBarPopup,False,True) Set cmdButton1=cmdBAR.Controls.Ad
Private Sub Check\u Status\u Click()
将cmdBAR设置为命令栏
将cmdButton1变暗为CommandBarButton
Set cmdBAR=commandbar.Add(,msoBarPopup,False,True)
Set cmdButton1=cmdBAR.Controls.Add(msoControlButton)
cmdButton1.Caption=“Dale”
cmdButton1.OnAction=“Dale”
cmdBAR.ShowPopup
“干净
Set cmdBAR=Nothing
Set cmdButton1=无
端接头
公共分谷()
MsgBox“hola”
端接头
我没有得到任何错误,只是它没有做任何事情,甚至菜单显示。实际上操作子例程需要
。。。
cmdButton1.Caption=“Dale”
cmdButton1.OnAction=“Dale”
cmdBAR.ShowPopup
...
并将您的sub放入某个公共模块:
Public Sub-Dale()
MsgBox“hola”
端接头
删除要求2。它不需要是一个函数。如果它被称为sub,那么它将是.OnAction=“yourSub”
,如果它是一个函数,那么它应该被称为.OnAction=“=yoursfunction()”
如果您使用=MyFuction()格式,那么该函数可以位于具有焦点的当前表单代码模块中。这允许您使用通用菜单/命令栏以不同的形式调用相同的函数。因此,say=MyDelete()可以在给定的表单中调用此函数,并且具有当前焦点的每个表单都将因此得到自己的自定义例程调用-这正是您想要的-此技巧也适用于Ribbon。使用a=MyFuncNmae()意味着功能区可以在具有焦点的每个窗体内运行代码。所以,也请注意第二个要求!只有要求标记功能是公共的。