使用过程名称作为字符串

时间:2018-04-06 07:57:33

标签: vba access-vba

我想从通过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假设能够运行一个字符串,因为它不是程序名吗?

1 个答案:

答案 0 :(得分:1)

Run需要一个过程(全局模块中的子或函数,而不是表单或类模块)。 PrintAllStuff是表单上的方法,因此无法通过Run执行。

但是,您可以通过CallByName执行此操作:

CallByName Forms("Stuff"), OpenArgsAry(2), vbMethod

OpenArgsAry(2)仅包含PrintAllStuff的位置。如果要在当前表单上执行该方法,可以使用Me