VBA:Worksheet_Change - 目标地址与使用相交



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

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

您可以使用:

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

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

最新更新