Я создаю функции VBA в Excel 2007. У одного есть прототип:
Function ToLevelCode_Range(val As Double, ByRef R As Range)
Я могу назвать это так хорошо, и он получает правильный результат:
=ToLevelCode_Range(B2, Categories!D1:D4)
Есть экземпляр, где я хочу, чтобы вторым параметром был определенный набор значений:
=ToLevelCode_Range(B2, { 0.38, 0.78, 1.18, 1.58 })
Это приводит к # ЗНАЧЕНИЮ, и я даже не могу добраться до первой точки останова в моей функции.
Я программно генерирую электронную таблицу, и число значений в массиве является переменным, поэтому я не могу сделать это с помощью функции с 5 параметрами и т. Д. Я не знаю, имеет ли VBA синтаксис списка переменных аргументов, но это будет вариант.
Как я могу заставить это работать?
источник
Если вы измените параметры функции на
он будет принимать как диапазон, так и массив
Конечно, вам нужно будет обрабатывать различные типы данных в коде функции
Когда вызывается как
=ToLevelCode_Range(B2, Categories!D1:D4)
R будет типVariant/Object/Range
Когда вызывается как
=ToLevelCode_Range(B2, { 0.38, 0.78, 1.18, 1.58 })
R будет типVariant/Variant(1 to 4)
источник