2016-11-05 4 views
-2

У меня есть функция VBA с несколькими аргументами, которые мне нужно получить с листа excel, а не из подкаталога, как я могу разделить входы на число параметров, которые мне нужны для моей функции?Функция с несколькими параметрами

Ex:

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

Мое понимание разницы в запятой и 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 
Смежные вопросы