【发布时间】:2019-08-26 22:29:54
【问题描述】:
这个问题没有令人满意的答案。我很乐意投票 任何包含变通方法的新响应。
如何在不事先将其转储到单元格的情况下将数组变量传递给 Excel 命名范围?我希望在数据验证列表中使用这样的动态命名范围。我不想通过数组变量直接在 VBA 中设置验证列表:
Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Join(ReturnArr, ",")
因为Formula1参数的长度限制为255 characters。因此,只要Len(Join(ReturnArr, ",")) 不超过 255 个字符,上述代码就可以正常工作。
我试过这个:
Option Explicit
Function ReturnArr() As Variant
Dim Arr(0 To 2)
Arr(0) = "Spinosaur"
Arr(1) = "T-Rex"
Arr(2) = "Triceratops"
ReturnArr = Arr
End Function
我也尝试了以下路径,但没有成功:
- 转置数组:
ReturnArr = Application.Transpose(Arr) INDEX(ReturnArr(),,1)- 以
=OFFSET(ReturnArr(),0,0,ROWS(ReturnArr()),1)命名的范围 - 我的事件下降到使用一个单元格的低级别,我将公式
=OFFSET(ReturnArr(),0,0,ROWS(ReturnArr()),1)放入A1单元格并用INDIRECT("$A$1")引用它 - 我尝试了未记录的秘密
EVALUATE函数,该函数适用于命名范围,如 case。我尝试EVALUATE与其他函数的所有组合返回数组。
更多参考:
Fast way to output array into range 为那些愿意为倾销方法做出贡献的人
【问题讨论】:
-
简短回答:不能那样做。见answers.microsoft.com/en-us/office/forum/…
-
您甚至不能将名称用作数据验证的值列表。如果您将
={1,2,3}插入您名字的Refers To,您可以使用它。 G。作为工作表中的矩阵公式,但不适用于数据验证。 -
请在用户声音中为此投票! excel.uservoice.com/forums/…
-
@ScottCraner 在找到解决方法之前无法完成。请检查此stackoverflow.com/a/39351425/1903793 作为击败通常认为不可能的 Excel 限制的示例。感谢您为我们应对最终让我兴奋的挑战奠定了坚实的基础:-)
标签: excel vba validation named-ranges