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却没有。它会弹出“宏”对话框。这里有什么问题?
存储在模块中的宏是独立的,可以像这样运行。
但是,存储在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编译器可以使用其方法,因此也可以毫无问题地调用此子程序。
| 归档时间: |
|
| 查看次数: |
2808 次 |
| 最近记录: |