Как я могу ссылаться на функцию, используя ее имя в строке - PullRequest
0 голосов
/ 10 мая 2018

Я ищу ссылку на функцию, используя только строку, содержащую имя функции. Я посмотрел на 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 голосов
/ 10 мая 2018

У вас есть некоторые несоответствия именования ...

Также использование '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 ссылается на следующий код: Динамические вызовы функций в Excel VBA

...