VBA:Worksheet_Change-Target.Address与使用相交

时间:2019-12-23 16:48:25

标签: excel vba

我正在成功运行一个包含以下代码的宏:

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相比有什么优势?

1 个答案:

答案 0 :(得分:5)

您可以使用:

If Not Intersect(Target, Range("B1,B3")) Is Nothing Then

Intersect很有用,因为它会在更改多个单元格时做出反应。例如,如果用户将数据复制并粘贴到恰好与B1和/或B3重叠的范围内,则Target.Address不会是$B$1$B$3,而Intersect会是仍然可以工作。