使用VBA在IF条件下无法进行数据验证

问题描述

我正在尝试使用具有IF条件的数据验证,该条件可以提供两个不同的数据验证列表。 dvEntry和dvExit是已定义的范围(表的列)。

如果我在Excdel单元格中输入公式,则可以正常运行: = IF(AI6 =“ ENTRY”,dvEntry,IF(AI6 =“ EXIT”,dvExit,“”))

但是,如果我尝试在VBA代码中使用上述两个IF条件,则会出现错误。 ActiveRow是我当前选择的行。 TRIGGERcol是用于数据验证的列。

Set Reset = tbl.ListRows(ActiveRow)

    With Reset
       .Range(TRIGGERcol).Validation.Add Type:=xlValidateList,AlertStyle:=xlValiDalertStop,Formula1:="=IF(AI6=""ENTRY"",dvEntry,IF(AI6=""EXIT"",dvExit,""""))"
    End With

如果我禁用第二个IF条件,它将起作用。但后来我无法使用所需的功能。我试过使用IFS而不是IF,但结果相同。使用多个IF条件时,VBA验证有什么问题?

感谢任何帮助。

解决方法

尝试一下:

With Selection.Validation
    .Delete
    .Add Type:=xlValidateList,_
        AlertStyle:=xlValidAlertStop,_
        Operator:=xlBetween,_
        Formula1:="= IF( $AI$6 = ""ENTRY"",dvEntry,IF( $AI$6 = ""EXIT"",dvExit,TEXT(,) ) )"
End With

Selection替换为适当的范围。