我有一个将数据验证添加到工作表的子项。看来可行:
Public Sub AddDataValidation(ByRef rng As Range, ParamArray options() As Variant)
With rng.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
operator:=xlBetween, Formula1:=Join(options, ",")
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End Sub
我正在尝试使用它来为我生成的40多个工作簿添加数据验证。子程序运行正常(如果我不关闭工作簿,则验证有效)。但是,当我关闭工作簿并重新打开时,会收到以下警告消息:
我们发现'filename.xlsx'中的某些内容存在问题。您是否希望我们尽力恢复原状?如果您信任此工作簿的来源,请单击“是”。
单击否关闭本书;单击“是”将其打开,但是数据验证不存在。
我在这里想念什么?是因为验证选项未存储在工作表中吗?可以使用其他文件类型吗?
谢谢
答案 0 :(得分:3)
您的选项列表很可能太大,无法将列表作为字符串而不是范围来处理。我自己也很难找到这个方法:)。如果我没记错的话,列表不能超过255个字符。因此,如果更大,则需要将列表存储在一个范围内,并在验证公式中引用该范围。