Criei um intervalo nomeado que é o resultado de uma função definidora de usuário.
Digamos que minha raiva tenha um nome List
e tenha três itens, se eu selecionar três células e entrar =List
e pressionar Ctrl+ Shift+ Enter, recebo meus três itens nas células... então tudo parece bem.
Se eu tentar usar o intervalo como fonte de validação de dados (como uma lista), recebo a mensagem "A fonte atualmente avalia como um erro".
Isso é uma limitação do Excel? Se não, o que está errado e como posso fazer?
A função:
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
O intervalo nomeado é definido comotestarrayreturn()
Responder1
TL; DR não é possível conforme descrito (cf.esta postagem no SO).
Resposta mais longa: há uma solução alternativa. A função definida pelo usuário deve retornar Range
não uma matriz de valores. Então a solução é usar uma planilha descartável para “colar” os dados temporários.
Como evitar dados temporários é o motivo exato pelo qual eu queria usar uma UDF, isso é uma pena, mas pode ser útil para outros.