VBA中如何用命名范围指定多单元格实现Intersect判断?
VBA命名范围指定多单元格触发宏的实现方案
完全可行,以下是两种正确的语法写法:
方法1:用Union合并目标单元格区域
通过Union函数将命名范围里的两个目标单元格合并成一个区域,再判断ActiveCell是否与该区域相交:
ElseIf Not Intersect(ActiveCell, Union(Range("Sk_Iron").Cells(3, 1), Range("Sk_Iron").Cells(3, 5))) Is Nothing Then
方法2:用Or连接两个独立判断
分别判断ActiveCell是否命中两个目标单元格,只要满足其中一个条件就触发:
ElseIf Not Intersect(ActiveCell, Range("Sk_Iron").Cells(3, 1)) Is Nothing Or _ Not Intersect(ActiveCell, Range("Sk_Iron").Cells(3, 5)) Is Nothing Then
两种方法的适用场景
- 若后续可能需要添加更多触发单元格,推荐用
Union写法,扩展更方便; - 若仅需判断少量单元格,用
Or连接的写法可读性更强。
内容的提问来源于stack exchange,提问作者WireTalents
相关产品推荐
相关产品推荐

