问题描述
我正在尝试使用具有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
替换为适当的范围。