这里的代码正如我预期的那样正常。它从包含257个字符的字符串创建下拉列表,88个项目用逗号分隔。但是,保存文件后,我无法重新打开它。代码(位于excel对象表中,而不是模块中)也会丢失。我非常感谢你的意见。
将88改为87,一切正常。
Sub test_function()
Dim myList As String
myList = ""
For a = 0 To 88
myList = myList & CStr(a) & ","
Next a
'for debug
MsgBox Len(myList) & ":" & myList
ThisWorkbook.Application.Sheets("DC_setup").Range("A1:A10").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=myList
.IgnoreBlank = True
.InCellDropdown = True
.ShowInput = True
.ShowError = False
End With
End Sub
您的数据验证列表“公式”太长。
您可以使用名称而不是以逗号分隔的值列表来使其变得非常非常短:
tblLegalValues
。legalValues
,指的是=tblLegalValues[Values]
=legalValues
现在,您不仅可以获得所需的所有值而不会出现任何问题,如果您在tblLegalValues
表中添加或删除值,您的数据验证会自动更新!
如果您的数据验证列表实际上只是0到88之间的整数,那么您不需要任何列表;将验证类型更改为xlValidateWholeNumber
,保留xlBetween
运算符,并生成Formula1=0
和Formula2=88
。