跳到主要内容

用变量名调用指定的宏过程

在 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

评论

您的电子邮件地址不会显示出来。*号为必填项。