使用间接公式进行数据验证

时间:2018-09-05 07:47:54

标签: excel-vba

我已经使用间接公式创建了用于数据验证的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

1 个答案:

答案 0 :(得分:1)

如果INDIRECT在创建时未评估为正确范围,则设置INDIRECT验证会抛出错误。-如果您手动进行验证,弹出窗口说“您是否仍要继续”,但是在VBA中,它只是失败。使用DisplayAlerts = False进行测试似乎无法解决此问题。

我唯一想到的选择是用临时的,有效的值填充BD2,或者在IF内的INDIRECT语句中包含“空”范围,例如Formula1:="=INDIRECT(IF(LEN(BD2)>0,BD2,""DropDown_Default""))",其中DropDown_Default是包含单个空白单元格的命名范围。