【问题标题】:How do I reference a function using its name in a string如何在字符串中使用函数名称引用函数
【发布时间】:2018-05-10 05:40:14
【问题描述】:

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

任何人都可以提供任何帮助将不胜感激。

【问题讨论】:

  • 把你的代码放在一个普通的模块中让它对我来说可以正常运行。 TestDynamic 1、2 和 3 正常工作,不存在的 TestDynamic4 按预期导致错误

标签: string excel function vba


【解决方案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

【讨论】:

    猜你喜欢
    • 2016-06-02
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2010-09-15
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多