excel - VBA:Worksheet_Change - Target.Address 与使用相交
问题描述
我正在成功运行一个包含以下代码的宏:
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
这个 sub 的重点是MainSub
在 Cell B1 或 B3 更改时通过调用使宏生效。有用。
但是,在寻找有关如何执行此操作的解决方案时,我也遇到了以下代码:
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-Statement 之后的另一个 if-Statement 可以解决问题,但是有没有更优雅的解决方案?
2) 使用intersect
vs 简单查看有什么好处Target.Address
?
解决方案
你可以使用:
If Not Intersect(Target, Range("B1,B3")) Is Nothing Then
Intersect
很有用,因为它会在更改多个单元格时做出反应。例如,如果用户将数据复制并粘贴到恰好与 B1 和/或 B3 重叠的范围内,Target.Address
则不会是$B$1
or $B$3
,但Intersect
仍然可以工作。
推荐阅读
- c - 试图生成线性近似表。输出中的值不正确
- scala - 如何将经典的 ActorContext 转换为类型化的
- sql - 更改表 - 这是做什么的?
- javascript - jQuery 使用 off() 和存储的对象
- r - 使用 data.table 中的变量分配新列
- sql-server - 从 XML 中提取属性值
- python - 在 discord.py 中播放音轨队列
- ansible - Specifying multiple groups as hosts from different inventories in an Ansible playbook
- html - 如何获得这些 Json 值?
- mysql - 如何在 MySQL 5.7 中取反整数值?