![使用用户定义函数进行数据验证](https://linux22.com/image/1419372/%E4%BD%BF%E7%94%A8%E7%94%A8%E6%88%B7%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0%E8%BF%9B%E8%A1%8C%E6%95%B0%E6%8D%AE%E9%AA%8C%E8%AF%81.png)
我创建了一个命名范围,它是用户定义函数的结果。
假设我的愤怒被命名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 的确切原因,所以这太糟糕了,但对其他人来说它可能有用。