【问题标题】:Maximum drop-down list/formula length in ExcelExcel 中的最大下拉列表/公式长度
【发布时间】:2013-04-15 14:10:48
【问题描述】:

我有以下 VBA 代码:

myList = "test"

Range("A1:Z1").Validation.Delete
Range("A1:Z1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=myList

如果我的列表超过 256 个字符,则会被截断。如果超过 1024,就会出现执行错误(我认为这是公式的最大长度)。

我怎样才能克服这些限制?我正在使用 Excel 2003。

【问题讨论】:

  • 也许尝试不同的方法,而不是内置的 Excel 验证。我已经成功使用了它:contextures.com/xlDataVal11.html。设置确实需要一些工作,但我认为它会满足您的需求。
  • 我必须动态创建一切。宏被设置为参考并编辑任何打开文档的第一行。不确定我是否可以在每个单元格中动态创建一个组合框控件。
  • 您可以使用链接 contextures.com/xlDataVal11.html 中的命名范围方法您可以做的(我这样做)是创建一个隐藏的工作表,在该工作表中我用我的列表填充说 Col A 和给它一个名称,然后在数据验证列表中使用该命名范围。试一试,如果您遇到困难,只需发布​​您尝试发布的代码,我可以向您展示如何实现它的示例代码。 :)
  • 正如我在下面已经说过的,VBA 项目被设置为参考,并与许多 Excel 文档一起使用。我研究了这种方法,但我必须动态创建名称,然后是控件。它看起来有点复杂。
  • 不,你不需要创建控件;)只是隐藏表中的命名范围

标签: vba excel excel-formula excel-2003


【解决方案1】:

使用上面 cmets 中发布的链接,我能够创建一个包含超过 256/1024 个字符的下拉列表。这是我经过更多搜索和尝试后得到的结果:

ActiveWorkbook.Names.Add Name:="List", RefersTo:="=ValidationList!$A$1:$A$" & i
Range("A1:AZ1").Validation.Delete
Range("A1:AZ1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=List"

仅此而已。 iValidationList 表的行数。我正在动态创建该工作表,并用我想在下拉列表中显示的内容填充第一个 A 列。

有用的参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多