我正在成功运行一个包含以下代码的宏:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Or Target.Address = "$B$3" Then
Call MainSub
End If
End Sub
此子控件的目的是在单元格B1或B3更改时通过调用MainSub
使宏弹簧生效。有用。
但是,当寻找解决方案时,我也遇到了这段代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("B1")) Is Nothing Then
Call MainSub
End If
End Sub
它与B1一样好用。
现在我有两个问题:
1)我如何包含另一个单元格(B3)以检查相交方法?使用or
对我不起作用,因此我认为在第一个if语句之后可以解决这个问题,但是还有一个更优雅的解决方案吗?
2)使用intersect
与仅看Target.Address
相比有什么优势?
答案 0 :(得分:5)
您可以使用:
If Not Intersect(Target, Range("B1,B3")) Is Nothing Then
Intersect
很有用,因为它会在更改多个单元格时做出反应。例如,如果用户将数据复制并粘贴到恰好与B1和/或B3重叠的范围内,则Target.Address
不会是$B$1
或$B$3
,而Intersect
会是仍然可以工作。