【发布时间】:2019-12-30 19:32:25
【问题描述】:
我遍历表格的列,并且对于每一列我遍历单元格,检查值是否符合单元格的验证。现在我想在我的代码中添加:如果任何其他单元格中缺少验证(存在于第二行),则验证将复制到该单元格。
首先我为第二行中的内容创建一个 Validation 对象:
Dim valMasterValidation As Validation
Set valMasterValidation = recordInTable.Range(columnInTable.Index).Validation
然后当单元格中缺少验证时,我添加一个验证如下:
With recordInTable.Range(columnInTable.Index).Validation
.Add Type:=valMasterValidation.Type, _
AlertStyle:=valMasterValidation.AlertStyle, _
Operator:=valMasterValidation.Operator, _
Formula1:=valMasterValidation.Formula1, _
Formula2:=valMasterValidation.Formula2
.IgnoreBlank = valMasterValidation.IgnoreBlank
.ErrorTitle = valMasterValidation.ErrorTitle
.ErrorMessage = valMasterValidation.ErrorMessage
End With
但是,.Add 部分会引发 1004 错误(“应用程序定义的或对象定义的错误”)。
为什么会这样?解决方案必须如何?
进一步调查后的附加信息:一些验证公式 (= Validation.Formula1) 将被复制而没有任何问题,其他则引发问题。例如:
=LEN(INDIRECT("tblCalibre[@CalibreName]"))>3
没问题,但是
=COUNTIF(INDIRECT("tblCountry[Country]");INDIRECT("tblCountry[@Country]"))=1
导致错误。
【问题讨论】:
标签: excel validation