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

Допустим, мой гнев называется 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 ответ1

0

TL; DR это невозможно, как описано (см. Этот пост на SO).

Длинный (er) ответ: есть обходной путь. Пользовательская функция должна возвращать Range не массив значений. Поэтому решение состоит в том, чтобы использовать одноразовый лист для "вставки" временных данных.

Поскольку избегание временных данных - это точная причина, по которой я хотел использовать UDF, это очень плохо, но может быть полезно для других.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .