这是我的测试代码
Sub dotask()
Dim qusub As String
qusub = Worksheets("Task List").Range("C2").Value
MsgBox qusub
Application.Run qusub
End Sub
Sub msg1()
MsgBox "sub msg1"
End Sub
Sub msg2()
MsgBox "sub msg2"
End Sub
Sub msg3()
MsgBox "sub msg3"
End Sub
Sub msg4()
MsgBox "sub msg4"
End Sub
所有这些都包含在一个标准模块中。我已经阅读了Trying to call a Sub with a String - VBA并根据我在那里找到的代码(即使用Application.Run)编写了代码。任务列表工作表的单元格C2目前包含“msg3”。当我执行sub“dotask”时,我首先得到一个消息框,说“msg3”,但我收到以下错误消息:
运行时错误'1004':
无法运行宏'msg3'。宏可能在此工作簿中不可用,或者可能禁用所有宏。
我正在使用Excel 2010,文件是.xlsm
- 我应该怎么做才能让我的代码按照我的意愿执行?
答案 0 :(得分:3)
在这里跑过来。 msg1似乎是一个保留字......将其更改为其他内容并且工作正常=)
答案 1 :(得分:1)
使用GetRef,您可以提供对sub的引用。 请参阅我的问题here,例如
编辑:按照评论中的建议,这里是这个问题解决方案的一部分。
sub one(para)
WScript.Echo para & " from one"
end sub
sub two(para)
WScript.Echo para & " from two"
end sub
sub main(subname, para)
Dim f : Set f = GetRef(subname)
f para
end sub
main "one", "test" '=>test from one