2009-10-01 4 views
1

У меня есть функция в VBA типаИспользуя массив констант в Excel VBA функции

Function MyFunc(Indx As Integer, k As Long, Rho As Range, A As Range) As Variant 
.... 
End Function 

, который называется в качестве определенного пользователя функции из внутри листа Excel. При вызове последние два аргумента быть в диапазоне

Результат = MyFunc (1,98, A1: A2, B1: B2))

он работает отлично. Тем не менее, при попытке напрямую использовать константу массива вместо диапазона

Результат = MyFunc (1,98, {10,11}, {20,30})

она возвращает Ошибка #VALUE.

Я думал, что я мог бы исправить это переосмысление последних два аргумента в виде массивов типа двойного, но это не сработало

Function MyFunc(Indx As Integer, k As Long, Rho() As Double, A() As Double) As Variant 
.... 
End Function 

ли кто-то есть предложение для гибких раствора, который будет разрешить либо метод вызова: по диапазону, а также по константе массива?

+0

Есть ли встроенные функции, которые позволяют либо диапазон или массив постоянная в качестве аргументов? На самом деле, есть ли встроенные функции, которые даже позволяют использовать константы массива? (Я думал, что есть, но все те, что я проверил, на самом деле используют массивы списка параметров) – RBarryYoung

ответ

3

Вы можете объявить свои два параметра как типы вариантов, а затем в своей функции проверить, что было передано им с помощью функции TypeName (varname).

+0

Sweeet! Спасибо - это сработало отлично. – 2009-10-02 00:37:47

+0

Рад это услышать :) – dendarii

-1

Возможно, вы можете преобразовать свой массив в объект диапазона при вызове функции.

Result = MyFunc(1,98,Range(10,11), Range(20,30))

+0

Спасибо за предложение. Я только что попробовал это, и, к сожалению, он терпит неудачу. – 2009-10-02 00:21:37

Смежные вопросы