Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA CommandBarButton不运行操作代码_Vba_Ms Access_Ms Access Forms - Fatal编程技术网

VBA CommandBarButton不运行操作代码

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

按下按钮后,它不会执行操作方法定义的子程序

我已经检查了Access中的所有安全选项是否已启用,并以不同的方式编写了相同的代码

我尝试使用OnAction方法运行函数

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()意味着功能区可以在具有焦点的每个窗体内运行代码。所以,也请注意第二个要求!只有要求标记功能是公共的。