Я создал именованный диапазон, который является результатом функции, определяемой пользователем.
Допустим, моя ярость имеет название List
и содержит три элемента. Если я выберу три ячейки, введу =List
и нажму Ctrl+ Shift+ Enter, я получу три элемента в ячейках... так что все выглядит нормально.
Если я попытаюсь использовать диапазон в качестве источника проверки данных (как список), я получу сообщение «Источник в настоящее время оценивается как ошибка».
Это ограничение Excel? Если нет, то в чем проблема и как мне ее решить?
Функция:
Public Function testarrayreturn() As Variant
Dim Arr(2) As String
Arr(0) = "a"
Arr(1) = "b"
Arr(2) = "c"
testarrayreturn = Application.Transpose(Arr)
End Function
Названный диапазон определяется какtestarrayreturn()
решение1
Короче говоря, это невозможно так, как описано (см.этот пост на SO).
Длинный(ый) ответ: есть обходной путь. Пользовательская функция должна возвращать Range
не массив значений. Поэтому решение заключается в использовании одноразового рабочего листа для «вставки» временных данных.
Поскольку именно из-за необходимости избегать временных данных я и хотел использовать UDF, это очень плохо, но для других это может оказаться полезным.