我正在尝试编写一个VBA宏,该宏:
1( 获取当前选定的活动单元格。
2( 如果值是一个小于或等于另一个单元格的数字(例如B2也包含一个数字(,则执行数据验证。
3( OR在活动单元格中的值等于用户插入的字符串"NA"。
这是我迄今为止想出的代码:
Sub Macro()
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
xlLessEqual, Formula1:="=OR(" & ActiveCell.Value & "=""NA"",AND(ISNUMBER(" & ActiveCell.Value & ")," & ActiveCell.Value & "<=B2))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
但它一直给我一个:
运行时错误"1004":应用程序定义或对象定义错误。
您对此问题有任何解决方案吗?
提前感谢!
试试这个。您需要引用单元格的地址,而不是其值。
Sub Macro()
With Selection.Validation
.Delete
.Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _
Formula1:="=OR(" & ActiveCell.Address & "=""NA"",AND(ISNUMBER(" & ActiveCell.Address & ")," & ActiveCell.Address & "<=B2))"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub