Используйте пользовательскую функцию для проверки данных

Используйте пользовательскую функцию для проверки данных

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

Допустим, моя ярость имеет название 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, это очень плохо, но для других это может оказаться полезным.

Связанный контент