多个if语句条件vba
我对VBA很新,所以需要一点帮助。 我有一个macros(BEM)是依赖于两个单元格的值。 我希望能够运行macros如果这些值中的任何一个被改变。 如果其中任何一个是空白的,我需要代码不做任何事情,直到在两个单元格中input一个值。
这是我迄今为止,但似乎没有工作:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$3" Or Target.Address = "$B$4" And (IsEmpty(Range("B3").Value) Or IsEmpty(Range("B4").Value)) Then Exit Sub Else BEM End If End Sub
testing多个范围时,可以使用If Not Intersect(Target, Range("B3:B4")) Is Nothing
。
而不是检查每个单元格,如果IsEmpty
或Not
,您可以使用WorksheetFunction.CountA
为整个范围,在您的情况下,您的范围由2个单元格,所以你想检查WorksheetFunction.CountA("YourRange") = 2
。
码
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B3:B4")) Is Nothing And WorksheetFunction.CountA(Range("B3:B4")) = 2 Then BEM End If End Sub
and
运算符比or
运算符具有更高的优先级,因此, if
将当前格式的条件解释为:
If Target.Address = "$B$3" Or (Target.Address = "$B$4" And (IsEmpty(Range("B3").Value)) Or IsEmpty(Range("B4").Value)) Then
但是你想要这样做or
条件:
If (Target.Address = "$B$3" Or Target.Address = "$B$4") And ((IsEmpty(Range("B3").Value) Or IsEmpty(Range("B4").Value))) Then