Excel 将Sub作为参数传递

Excel 将Sub作为参数传递,excel,vba,Excel,Vba,我有一艘潜艇 Sub MySub1 MsgBox "I am ok!" End Sub 然后我有一个带参数的所谓“方法子” Sub MySub2 (Parameter1, Parameter2, MethodName) MsgBox Parameter1 MsgBox Parameter2 MethodName End Sub 然后我想在我的主人那里运行整个链条。我尝试了以下方法: Sub MasterSub Dim Parameter1 As String

我有一艘潜艇

Sub MySub1

MsgBox "I am ok!"

End Sub
然后我有一个带参数的所谓“方法子”

Sub MySub2 (Parameter1, Parameter2, MethodName)

MsgBox Parameter1
MsgBox Parameter2

MethodName

End Sub
然后我想在我的主人那里运行整个链条。我尝试了以下方法:

Sub MasterSub

Dim Parameter1 As String
Dim Parameter2 As String
Dim MethodName As String

Parameter1 = "Ou"
Parameter2 = "Yes"
MethodName = MySub1

MySub2 Parameter1, Parameter2, MethodName

Dim 

这会给出一个预期值或函数的错误。如何进行此操作?

您需要创建
模块(如下面的屏幕截图所示):

然后粘贴此代码:

Private Sub MySub1()
MsgBox“我很好!”
端接头
私有子MySub2(参数1、参数2、方法名)
MsgBox参数1
MsgBox参数2
Application.runmethodname
端接头
Sub MasterSub()
Dim参数1作为字符串
Dim参数2作为字符串
Dim MethodName作为字符串
参数1=“Ou”
参数2=“是”
MethodName=“MySub1”
MySub2参数1、参数2、方法名
端接头

然后单击运行宏的
Run Sub/User Form
按钮(或单击
F5
键)。

您希望它成为参数的原因是什么?通过将字符串作为子例程(方法)的名称传递给它,然后使用
Select Case
If
根据字符串的值运行某个子例程,可以完成类似的操作…@BigBen
Application.run“MethodName”
有效。我没有尝试第二个建议,但我也会检查它
Sub
不返回值<代码>功能不起作用。这就是为什么当你说
MethodName=MySub1
时,它不会给
MethodName
赋值。我想这就是为什么你会出错。如果将其转换为函数,请不要忘记为函数指定返回值(即在
MySub1
sub结束之前,使用类似以下内容:
MySub1=“这是一个测试”