我想从通过openargs打开的表单中运行一个过程
这就是我打开表格的方式。
DoCmd.OpenForm "Loading_Form", acNormal, , , , acWindowNormal, DynaProgBarMax & "|" & DynaLableCaption & "|" & ProcCall & "|"
这是表单打开时运行的内容。
Private Sub Form_Open(Cancel As Integer)
Dim OpenArgsAry As Variant
OpenArgsAry = Split(Me.OpenArgs, "|")
Me.DynaProgBar.Max = OpenArgsAry(0)
Me.DynaLable.Caption = OpenArgsAry(1)
Run OpenArgsAry(2)
End Sub
我遇到了Run OpenArgsAry(2)
的问题。我收到一条错误,指出无法找到程序。 OpenArgsAry(2)
包含字符串"Forms(""Stuff"").PrintAllStuff()"
。当我将Run OpenArgsAry(2)
替换为Run Forms("Stuff").PrintAllStuff()
时,它可以正常工作。
Run
假设能够运行一个字符串,因为它不是程序名吗?
答案 0 :(得分:1)
Run
需要一个过程(全局模块中的子或函数,而不是表单或类模块)。 PrintAllStuff
是表单上的方法,因此无法通过Run
执行。
但是,您可以通过CallByName
执行此操作:
CallByName Forms("Stuff"), OpenArgsAry(2), vbMethod
OpenArgsAry(2)
仅包含PrintAllStuff
的位置。如果要在当前表单上执行该方法,可以使用Me
。