2016-11-05 145 views
-2

我有一個帶有多個參數的VBA函數,我需要從Excel表格中獲取,而不是從一個子表格獲取,我如何將輸入分成我需要的參數數量?具有多個參數的功能

例:

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

這是我怎麼一直試圖獲取值:

This is how I have been trying to get the values

回答

0

這是你想要的嗎?

代碼:

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

    TestFunction = a + b 

End Function 

Excel工作表:

=TestFunction(A1,B1) 
+0

是的,但是,當我選擇excel中的單元格,並用逗號分隔參數時,仍然出現錯誤。我希望函數所在的單元格表示該值是錯誤的。我想知道的是,如何手動輸入三個Excel單元格值作爲vba函數的參數。 – spacedout

+0

我對逗號和分歧的區別的理解是,某些語言設置使用一個,而其他語言使用另一個。對於你遇到的問題,我需要知道你正在使用的方程,然而,單元有時被格式化爲文本或其他格式。另一件有時候會出錯的事情是零分情況。你用調試器完成了計算嗎? –

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