打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel揭秘25:突破数据有效性列表的字符限制

excelperfect

数据有效性(Excel2013版之后称为“数据验证”)是一个很有用的功能,也是用户的常用功能之一,特别是使用数据有效性列表。如下图1所示,在“数据验证”对话框中,选择“允许”下拉列表中的“序列”,在“来源”框中设置数据列表来源。

图1

数据有效性列表的数据来源有两种设置方式:

1. 使用逗号分隔的字符串

2. 使用单元格区域

然而,如果使用逗号分隔的字符串作为数据列表的来源,你会发现这样的字符串的字符数被限制为255个字符,超过此限制的字符串根本无法输入到数据来源中。当然,这样的限制不会带来问题,因为你还可以使用单元格区域中的数据作为数据列表来源。

但是,有趣的是,使用VBA代码编程,却也可以给数据列表提供大于255个字符的字符串。

下面的代码创建了一个逗号分隔的344个字符的字符串,并在A1中创建了一个数据有效性列表。

Sub foo()

    Dim strArrValidation(0 To 70) As String

    Dim strValidation As String

    Dim i As Long

    For i =LBound(strArrValidation) To UBound(strArrValidation)

       strArrValidation(i) = '项目' & CStr(i)

    Next i

   strValidation = Join$(strArrValidation, ',')

   Debug.Print Len(strValidation) '344个字符

    With Range('A1').Validation

       .Delete

        .Add Type:=xlValidateList, Formula1:=strValidation

    End With

End Sub

运行代码后的结果如下图2所示。

图2

可以看到,下拉列表项从“项目0”至“项目70”,共有344个字符。

下面,让我们核查一下这个超长的列表是否被保存了。将工作簿保存为.xlsm文件后,关闭该工作簿。然后,将其扩展名更改为.zip,接着打开这个压缩文件,导航到xl文件夹,打开数据有效性所在的工作表,示例中是sheet2.xml,打开它,你可以看到formula1元素下有71个项已被保存到文件中,如下图3所示。

图3

关闭打开的压缩文件夹,将其扩展名改回.xlsm,然后在Excel中打开,你会发现Excel弹出下图4所示的提示信息。

图4

如果单击“是”,选择修复,将会弹出下图5所示的提示信息。

图5

在打开的工作簿中,数据有效性列表已被删除。

复修记录并没有告诉我们数据有效性列表被移除的原因,但可以肯定的是,列表字符数超出了字符数限制。

你可能会说,我可以在Workbook_Open事件中添加长列表,然后在Workbook_BeforeSave事件中将其删除以避免修复问题,但是使用代码绕过限制字符数没有很好的用处。

注:本文学习整理自colinlegg.wordpress.com,供有兴趣的朋友参考。 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
突破数据有效性列表的字符限制
库/表/记录的增查删改
这30个Excel实用技巧,效率大神都忍不住收藏了。
excel小技巧:防止数据录入出错
VBA学习实践——用VBA实现Excel格数据分列功能
excel公式兼容性问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服