【问题标题】:Excel VBA Data Validation - Drop Down: Options too many to be saved, causes Error "Excel found unreadable content"Excel VBA 数据验证 - 下拉:选项太多无法保存,导致错误“Excel 发现无法读取的内容”
【发布时间】:2019-01-07 14:24:18
【问题描述】:

我在 Excel 工作表的单元格区域中添加了一个下拉选项,您可以在其中从数据库加载的 100 多个帐户中进行选择。我在这里添加了一个示例代码(String s 包含所有帐户,假设它至少是一个 500+ 字符的字符串,在原始代码中,帐户被加载到带有 makro 的字符串中):

Dim r As Range
Dim v As Variant
Dim s As String

s = "Account_a,Account_b,Account_c.." ' <-- really long string, contains 100+ accounts
Set r = ActiveSheet.Range("A1:A100")

For Each v In r
    v.Validation.Delete
    v.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
    Operator:=xlBetween, Formula1:=s
Next v

问题是 Excel 无法以一定的字符串长度保存数据验证(对于 s,错误已经出现在 256+ 字符长度处,经过一些研究我发现这似乎是许多 excel 的断点VBA 字符串函数),所以当我保存此工作表时,将其关闭并再次打开它会出现错误(“Excel 发现无法读取的内容”,如果您尝试修复它,Excel 会从工作表中删除数据验证,因为它的“不可读”),并且从数据库中加载的帐户消失了。

保存工作簿时,是否有增加数据验证的最大字符串长度的选项?这里唯一的问题似乎是数据量,因为如果我只加载 20% 的帐户,这可以正常工作..

更新: AcsErno 编写的 cmets 中有一个替代解决方案,也可以在这里找到:Excel keep loading my spreadsheet with an error(问题的第一个答案)

【问题讨论】:

  • 您可以将帐户加载到命名范围并将其用作验证列表,如下所示:stackoverflow.com/questions/6786540/…
  • @AcsErno 这是一个有效的解决方案,谢谢。我怎样才能支持你的评论?在这个工作表中,许多变量(除了帐户)是从不同的数据库加载的,并且它们(以及它们的数量和选项)会随着时间而改变,所以我可能不得不在一个额外的工作表上创建很多动态范围bec excel对于单元格的数据验证有一个非常短的最大字符串长度,但是好的..
  • 只需点击评论左侧的灰色小三角形。谢谢。
  • @AcsErno 似乎需要最低声誉才能投票:/ 我所能做的就是标记..

标签: excel vba list validation


【解决方案1】:

您可以将帐户加载到命名范围并将其用作验证列表,例如here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 2017-03-12
    相关资源
    最近更新 更多