【发布时间】:2017-10-11 05:31:34
【问题描述】:
我有这个代码。这是为了示例而设计的代码。
Sub x()
ActiveSheet.Range("A1").Validation.Delete
ActiveSheet.Range("A1").Validation.Add Type:=xlValidateCustom, Formula1:="=VALUE(RIGHT(A1,6))>0"
End Sub
如果代码执行时 A1 为空,我会收到错误 1004,应用程序定义或对象定义错误。我相信这是因为公式导致#VALUE! 而不是False。如果我尝试手动设置验证,我会收到一条警告说结果是错误的,但如果我单击确定,验证就会正常工作。
我认为这是因为我没有免除空白单元格的验证,所以我添加了以下行:
Sub x()
ActiveSheet.Range("A1").Validation.Delete
ActiveSheet.Range("A1").Validation.IgnoreBlank = True
ActiveSheet.Range("A1").Validation.Add Type:=xlValidateCustom, Formula1:="=VALUE(RIGHT(A1,6))>0"
End Sub
但这只是将错误向上移动了一行。现在我在 IgnoreBlank = True 行上收到 1004 错误。
我想我可以暂时在单元格中输入一个值,设置验证,然后删除单元格的内容,但我希望有不同的方法。
我做错了吗?我最初计划最后以编程方式进行验证,而不是使用 Excel 的验证功能。
【问题讨论】:
标签: excel validation vba