Кажется, вы пытаетесь использовать диапазон листа как массив, отсчитываемый от 0. На самом деле это не имеет смысла, хотя, используя свойство Cells
диапазона (которое вы фактически пытаетесь сделать неявно), вы можете приблизиться:
Public Function mytest(arr1 As Range)
Dim A As Double
Dim B As Double
A = arr1.Cells(1)
B = arr1.Cells(2)
mytest = A + B 'The actual formula is a bit more complicated than simple addition
End Function
В приведенном выше коде вы можете отбросить Cells()
, поскольку здесь оно будет работать как свойство по умолчанию, но наиболее опытные программисты VBA любят явно указывать, какое свойство они используют.
Это будет более или менее работать для одномерных диапазонов, но может работать не так, как ожидалось с 2-х мерными диапазонами. Cells
принимает до 2 индексов, и в целом я думаю, что код будет более ясным, если вы явно укажете полные индексы (например, A = arr1.Cells(1,1)
и B = arr1.Cells(2,1)
).