我希望仅使用包含函数名称的字符串来引用函数。我查看了callbyname和application.run,但我不确定我哪里出错了。
有什么想法吗?
Option Explicit
Public Sub TestDynamic1()
Debug.Print "TestDynamic 1"
End Sub
Sub TestDynamic2()
Debug.Print "TestDynamic 2"
End Sub
Private Sub TestDynamic3()
Debug.Print "TestDynamic 3"
End Sub
Sub callTestDynamic(i As Integer)
On Error GoTo DynamicCallError
Application.Run "TestDynamic" & i
Exit Sub
DynamicCallError:
Debug.Print "Failed dynamic call: " & Err.Description
End Sub
Public Sub TestMe()
callTestDynamic 1
callTestDynamic 2
callTestDynamic 3
callTestDynamic 4
End Sub
我得到的只是错误,说宏不存在。
我希望能够做的是
function testFunction(functionName as string)
run functionName
end function
sub testSub()
*... some code here ...*
testFunction "test"
end sub
function test()
debug.print "This function works"
end function
任何人都可以给予的帮助将不胜感激。
答案 0 :(得分:-1)
你有一些命名不一致......
同时使用'test'作为函数不起作用
Sub testSub()
'*... some code here ...*
testFunction "test1"
End Sub
Function testFunction(functionName As String)
Application.Run functionName
End Function
Function test1()
Debug.Print "This function works"
End Function
注意:OP引用以下代码:Dynamic Function Calls in Excel VBA