我已经使用间接公式创建了用于数据验证的VBA,但是在运行宏时抛出错误。我想念什么吗?
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=INDIRECT(BD2)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
答案 0 :(得分:1)
如果INDIRECT
在创建时未评估为正确范围,则设置INDIRECT
验证会抛出错误。-如果您手动进行验证,弹出窗口说“您是否仍要继续”,但是在VBA中,它只是失败。使用DisplayAlerts = False
进行测试似乎无法解决此问题。
我唯一想到的选择是用临时的,有效的值填充BD2,或者在IF
内的INDIRECT
语句中包含“空”范围,例如Formula1:="=INDIRECT(IF(LEN(BD2)>0,BD2,""DropDown_Default""))"
,其中DropDown_Default
是包含单个空白单元格的命名范围。