2016-11-05 5 views
-2

여러 인수가있는 VBA 함수가 있습니다. Excel에서 가져올 필요가 있으며 하위 함수가 아닌 경우 함수에 필요한 매개 변수 개수를 입력으로 나누는 방법은 무엇입니까?여러 매개 변수가있는 함수

예는 :

This is how I have been trying to get the values

답변

0

이 당신이 원하는 무엇인가 :

Function func(a as double,b as double) as double 
    'calculations 
    'some return value 
End Function 

이것은 내가 값을 얻기 위해 노력 해왔다 어떻게?

코드 :

Function TestFunction(a As Double, b As Double) As Double 

    TestFunction = a + b 

End Function 

엑셀 시트 :

=TestFunction(A1,B1) 
+0

그렇습니다. 그러나 Excel에서 셀을 선택하고 매개 변수를 쉼표로 나누면 오류가 발생합니다. 함수가 있어야하는 셀은 값이 잘못되었다고 말합니다. 내가 알고 싶은 것은 vba 함수에 매개 변수로 세 개의 셀 값을 수동으로 입력하는 방법입니다. – spacedout

+0

쉼표와 simicolon 차이점에 대한 나의 이해는 어떤 언어 설정은 하나를 사용하고 다른 언어 설정은 다른 언어 설정을 사용한다는 것입니다. 당신이 마주 치고있는 문제에 대해, 나는 당신이 사용하고있는 방정식을 알아야하지만, 때로는 셀을 텍스트 나 다른 형식으로 포맷합니다. 가끔 잘못되는 다른 것은 제로 상황에 의한 나누기입니다. 디버거를 사용하여 계산을 수행 했습니까? –

2

당신이 ParamArray 인수

를 사용 후, 당신의 번호를 모르는있는 여러 인자를 처리하는 경우 예를 들어, func()이라고 가정하면 전달하는 인수를 간단히 합하면됩니다.

Function func(ParamArray args() As Variant) As Double 
    Dim i As Long 
    Dim cell As Range 

    For i = LBound(args) To UBound(args) '<--| loop through each passed argument 
     If TypeName(args(i)) = "Range" Then '<--| if the current element is a Range 
      For Each cell In args(i) '<--| loop through range cells 
       func = func + cell.Value 
      Next cell 
     Else '<--| otherwise 
      func = func + args(i) '<--| simply process the current argument value 
     End If 
    Next i 
End Function 
관련 문제