在VBA中将函数作为参数传递,例如。找根

时间:2014-11-22 23:24:36

标签: excel-vba vba excel

我正在寻找一种将函数作为参数传递的方法。

假设我有一个根查找算法的功能。此函数查找另一个函数f()的根。 现在我希望能够将任何函数作为参数传递,以便我可以使用具有不同函数的rootFinder函数(即我定义的任何n函数)

如何将f()及其相应的输入作为参数传递?

这是我的代码来说明问题。我使用f()和functionInputs作为占位符。

Function rootFinder(ByVal lowBound As Double, ByVal upBound As Double, ByVal f() As String, ByVal functionInputs As String)
'this function uses the
Dim xmid As Double, xold As Double, tol As Double

'accuary of algorithm
tol = 0.001

If f(lowBound,functionInputs) * f(upBound,functionInputs) > 0 Then
    MsgBox "choose other bounds"
Else
        xold = lowBound
    Do
        xmid = (lowBound + upBound) / 2
        If Abs((xmid - xold) / xmid) < tol Then
            Exit Do
        End If
        xold = xmid
        If f(lowBound,functionInputs) * f(xmid,functionInputs) > 0 Then
            lowBound = xmid
        Else
            upBound = xmid
        End If
    Loop
    rootFinder = xmid
End If

End Function

1 个答案:

答案 0 :(得分:0)

f()&#34;功能&#34; rootFinder函数作为参数实际上是一个字符串数组,就像你声明它一样。我不认为你可以像你想要的那样将函数作为参数传递。为什么不使用函数的实际名称并正常调用它(不试图将其作为参数传递)?

(你的算法虽然很聪明,但也很光滑。我希望你能让它运转起来!)