Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Ms access 为什么在我按F5或运行Sub时Access VBA会提示我输入宏?_Ms Access_Vba - Fatal编程技术网

Ms access 为什么在我按F5或运行Sub时Access VBA会提示我输入宏?

Ms access 为什么在我按F5或运行Sub时Access VBA会提示我输入宏?,ms-access,vba,Ms Access,Vba,我发现了这个问题,但答案对我没有帮助,因为我的sub没有参数,也不是由事件触发的 我有两个潜水艇。一个在模块中,一个在表单中 Sub ModuleSub() MsgBox ("Hello World") End Sub Sub FormSub() MsgBox ("Hello World") End Sub 当我按F5时,模块子模块确实运行,但表单子模块不运行。它将打开“宏”对话框。这里有什么问题?存储在模块中的宏是独立的,可以这样运行 但是,存储在表单模块或类模块

我发现了这个问题,但答案对我没有帮助,因为我的sub没有参数,也不是由事件触发的

我有两个潜水艇。一个在模块中,一个在表单中

Sub ModuleSub()
    MsgBox ("Hello World")    
End Sub


Sub FormSub()
    MsgBox ("Hello World")
End Sub

当我按F5时,模块子模块确实运行,但表单子模块不运行。它将打开“宏”对话框。这里有什么问题?

存储在模块中的宏是独立的,可以这样运行

但是,存储在表单模块或类模块中的所有函数/子函数实际上都是此表单/类的方法,如果没有此表单/类的实例,它们将无法运行


如果打开即时窗口(CTRL+G),则可以运行以下代码:

Call ModuleSub
没有任何问题


此代码:

Call FormSub
将返回编译错误:未定义子或函数

但是,如果在函数名称之前添加表单名称(如下所示):

由于动态创建form的实例,VBA编译器可以使用其方法,因此调用此sub也不会出现任何问题

call Form_FormName.FormSub 'replace FormName with the name of your form.