访问 VBA - 使用变量调用表单模块中的 subroutine/function
Access VBA - Use a variable to call a subroutine/function in a form's module
我有一个 for 循环,它将子例程的名称存储在字符串变量中,调用该子例程,然后重复。
Public Sub CallByVar_Click()
Dim i
Dim st As String
Dim subName(1)
subName(0) = "A"
subName(1) = "B"
For i = 0 To 1
st = "Sub_" & subName(i)
Application.Run st
Next i
End Sub
Public Sub Sub_A()
Debug.Print "run Sub_A"
End Sub
Public Sub Sub_B()
Debug.Print "run Sub_B"
End Sub
它在 模块 中完美运行,但是当我将其剪切并粘贴到 表单的 代码 window 中时,它给出错误:Microsoft Access 找不到过程 'Sub_A.'
我试过使用函数而不是 subs,我试过使用 Call Eval()
而不是 Application.Run
,我似乎无法弄清楚为什么它在模块中工作,但不是在表格中。感谢任何帮助。
为此使用 CallByName:
Public Sub CallByVar_Click()
Dim i As Integer
Dim st As String
Dim subName(1) As String
subName(0) = "A"
subName(1) = "B"
For i = 0 To 1
st = "Sub_" & subName(i)
CallByName Me, st, VbMethod
Next i
End Sub
我有一个 for 循环,它将子例程的名称存储在字符串变量中,调用该子例程,然后重复。
Public Sub CallByVar_Click()
Dim i
Dim st As String
Dim subName(1)
subName(0) = "A"
subName(1) = "B"
For i = 0 To 1
st = "Sub_" & subName(i)
Application.Run st
Next i
End Sub
Public Sub Sub_A()
Debug.Print "run Sub_A"
End Sub
Public Sub Sub_B()
Debug.Print "run Sub_B"
End Sub
它在 模块 中完美运行,但是当我将其剪切并粘贴到 表单的 代码 window 中时,它给出错误:Microsoft Access 找不到过程 'Sub_A.'
我试过使用函数而不是 subs,我试过使用 Call Eval()
而不是 Application.Run
,我似乎无法弄清楚为什么它在模块中工作,但不是在表格中。感谢任何帮助。
为此使用 CallByName:
Public Sub CallByVar_Click()
Dim i As Integer
Dim st As String
Dim subName(1) As String
subName(0) = "A"
subName(1) = "B"
For i = 0 To 1
st = "Sub_" & subName(i)
CallByName Me, st, VbMethod
Next i
End Sub