如何在字符串中使用其名称引用函数

时间:2018-05-09 21:07:30

标签: string excel-vba function vba excel

我希望仅使用包含函数名称的字符串来引用函数。我查看了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

任何人都可以给予的帮助将不胜感激。

1 个答案:

答案 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