2014-11-22 7 views
1

나는 인수로 함수를 전달하는 방법을 찾고있다.VBA에서 인수로 함수 전달 예. 루트 찾기

내가 루트 검색 알고리즘을 가지고 있다고 가정 해 봅시다. 이 함수는 다른 함수 f()의 루트를 찾습니다. 이제 다른 함수 (즉, 내가 정의한 n 개의 함수 중 하나)로 rootFinder 함수를 사용할 수 있도록 모든 함수를 인수로 전달할 수 있기를 원합니다.

어떻게 f() 함수를 전달할 수 있습니까? 그리고 그것은 논증으로서 각각의 입력입니까?

다음은이 질문을 설명하기위한 코드입니다. 나는 placeholder로서 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 

답변

0

매개 변수로 사용하는 f() "함수"는 실제로 문자열의 배열을 선언 한 것과 같습니다. 원하는 매개 변수로 함수를 전달할 수 있다고 생각하지 않습니다. 왜 함수의 실제 이름을 사용하고 그것을 보통 매개 변수로 전달하려고하지 않습니까?

는 (귀하의 알고리즘은하지만 매우 영리하고 매끄러운입니다. 나는 당신이 그것을 작동하게 희망!)

+0

내가 (변형) 배열을 통과하는 유사한 기능을 사용합니다. 이것을'byvalval f as variant '와 같이 전달하십시오. (문자열 배열 인 경우 이벤트) –

관련 문제