当我按F5或Run Sub时,为什么Access VBA提示我输入宏?

PBe*_*ezy 5 ms-access vba access-vba

我发现了这个问题,为什么当我按Run Sub时Excel VBA为什么会提示我输入宏名称,但答案却无济于事,因为我的sub没有参数并且不是由事件触发的。

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

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


Sub FormSub()
    MsgBox ("Hello World")
End Sub
Run Code Online (Sandbox Code Playgroud)

当我按F5键时,Module Sub确实运行,但是Form Sub却没有。它会弹出“宏”对话框。这里有什么问题?

mie*_*elk 5

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

但是,存储在Form模块或Class模块中的所有函数/子实际上是此Form / Class 的方法,如果没有此Form / Class的实例,则无法运行它们。


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

Call ModuleSub
Run Code Online (Sandbox Code Playgroud)

没有任何问题。


这段代码:

Call FormSub
Run Code Online (Sandbox Code Playgroud)

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

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

call Form_FormName.FormSub 'replace FormName with the name of your form.
Run Code Online (Sandbox Code Playgroud)

由于可以动态创建窗体实例,并且VBA编译器可以使用其方法,因此也可以毫无问题地调用此子程序。