数据验证无法保存

时间:2019-06-20 21:26:13

标签: excel vba

我有一个将数据验证添加到工作表的子项。看来可行:

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'中的某些内容存在问题。您是否希望我们尽力恢复原状?如果您信任此工作簿的来源,请单击“是”。

单击否关闭本书;单击“是”将其打开,但是数据验证不存在。

我在这里想念什么?是因为验证选项未存储在工作表中吗?可以使用其他文件类型吗?

谢谢

1 个答案:

答案 0 :(得分:3)

您的选项列表很可能太大,无法将列表作为字符串而不是范围来处理。我自己也很难找到这个方法:)。如果我没记错的话,列表不能超过255个字符。因此,如果更大,则需要将列表存储在一个范围内,并在验证公式中引用该范围。