我正在成功运行包含以下代码段的宏:
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
仍然有效。