在 VBA 代码的执行过程中,有时可能需要根据用户的选择调用不同功能的宏过程。通常使用 Select Case 语句根据用户的选择调用指定名称的宏。
示例:使用 Select Case 语句
以下示例根据过程参数 intIndex
的匹配情况使用 Call 方法调用相应的过程。在使用 Call 方法调用过程时,被调用的过程名称不能使用变量。
Sub SelectCall(intIndex As Integer)
Select Case intIndex
Case 1
Call Macro1
Case 2
Call Macro2
Case 3
Call Macro3
' ......
End Select
End Sub
示例:使用 Application 对象的 Run 方法
由于在使用 Call 方法调用过程时,被调用的过程名称不能使用变量。所以在处理类似上述示例的代码时,使用 Application 对象的 Run 方法可以使代码更简洁且更灵活。上面的示例使用 Run 方法的 VBA 代码如下:
Sub SelectRun(intIndex As Integer)
Application.Run "Macro" & intIndex
End Sub
Run 方法语法格式
Run (Macro, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)
其中,参数 Macro 指定要运行的宏的名称。
参数 Arg1 - Arg30 指定传递给函数的参数。注意,在传递参数时,不能使用命名参数,必须按照参数位置顺序进行传递。
示例:使用 Run 方法调用带参数的过程
以下示例代码在 RunParameter
过程中使用 Run 方法调用 strGetString
函数并显示函数返回的结果。
Function strGetString(intNum As Integer, strName As String) As String
strGetString = strName & " " & intNum
End Function
Sub RunParameter()
Dim strResult As String
strResult = Application.Run("strGetString", 2021, "Excel")
MsgBox strResult, vbOKOnly + vbInformation, "Run 传递参数"
End Sub