我创建了一个命名范围,它是用户定义函数的结果。
假设我的愤怒被命名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
TL;DR 正如所描述的那样,这是不可能的(参见这篇文章)。
较长的答案:有一个解决方法。用户定义的函数必须返回一个Range
非值数组。因此,解决方案是使用一次性工作表来“粘贴”临时数据。
由于避免临时数据正是我想要使用 UDF 的确切原因,所以这太糟糕了,但对其他人来说它可能有用。