1

这里的代码按我的预期工作得很好。它从包含 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
4

1 回答 1

0

您的数据验证列表“公式”太长。

您可以使它非常非常短 - 通过使用名称而不是逗号分隔的值列表:

  1. 在工作簿中添加新工作表,在单元格 A1 中键​​入“值”
  2. 在 A 列中添加所有合法值,从第 2 行开始
  3. 从“主页”功能区中选择“格式为表格”;出现提示时,请确保表格包括 A 列中具有值的所有单元格以及标题(应选中“我的表格有标题”复选框)。
  4. 在“表格工具”功能区中,更改表格的名称,例如tblLegalValues.
  5. 从“公式”功能区中,调出名称管理器并单击“新建”按钮。
  6. 定义一个工作簿范围的名称 - 称它为 eg legalValues,指=tblLegalValues[Values]
  7. 制作您的数据验证列表=legalValues
  8. (可选)隐藏工作表

现在,您不仅可以毫无问题地获得所需的所有值,而且如果您从tblLegalValues表中添加或删除值,您的数据验证也会自动更新!


如果您的数据验证列表实际上只是 0 到 88 之间的整数,那么您不需要任何列表;将验证类型更改为xlValidateWholeNumber,保留xlBetween运算符,并制作Formula1=0and Formula2=88

于 2018-09-07T18:51:29.803 回答