你有两个选项。
1. 将字符串"This doesn't work"拆分为两个参数。
Public Sub TestThis()
Call MethodDynamically("MethodToBeCalled", "This doesnt", "work")
End Sub
Public Sub MethodDynamically(MethodName As String, Param1 As String, Param2 As String)
Application.Run MethodName, Params
End Sub
Public Sub MethodToBeCalled(Param1 As String, Optional Param2 As String)
Debug.Print Param1 & ", " & Param2
End Sub
或者使用可选参数:
Public Sub TestThis()
Call MethodDynamically("MethodToBeCalled", "This doesnt, work")
End Sub
Public Sub MethodDynamically(MethodName As String, Params As String)
Application.Run MethodName, Params
End Sub
Public Sub MethodToBeCalled(Param1 As String, Optional Param2 As String)
Debug.Print Param1 & ", " & Param2
End Sub
编辑:
试试这个。
Public Sub TestThis()
Call MethodDynamically("MethodToBeCalled", "This doesnt, work")
End Sub
Public Sub MethodDynamically(MethodName As String, Optional params As String = "")
If params = "" Then Application.Run MethodName
Select Case selectParamNumbers(params)
Case 0
paramArr = paramSplit(params)
Application.Run MethodName, paramArr(0)
Case 1
paramArr = paramSplit(params)
Application.Run MethodName, paramArr(0), paramArr(1)
Case 2
paramArr = paramSplit(params)
Application.Run MethodName, paramArr(0), paramArr(1), paramArr(2)
'And so on...
End Select
End Sub
Public Function paramSplit(param As String) As Variant
paramSplit = Split(param, delimiter:=", ")
End Function
Public Function selectParamNumbers(param As String) As Long
Dim paramAmount() As String
paramAmount = Split(param, delimiter:=",")
selectParamNumbers = UBound(paramAmount)
End Function
Public Sub MethodToBeCalled(Param1 As String, Optional Param2 As String)
Debug.Print Param1 & " " & Param2
End Sub
This doesnt
和work
作为MethodToBeCalled
的两个参数? - noobmaster69