Excel VBA:具有多个名称范围的相交方法

Excel VBA:具有多个名称范围的相交方法

交叉口不起作用。

Dim NTit 作为范围 Dim NInf 作为范围 Dim NDat 作为范围

Dim WS As Worksheet 设置 WS = ActiveSheet

   Set NTit = WS.Range("$A$1:$J$1")       
   Set NInf = WS.Range("$B$3:$F$3")       
   Set NDat = WS.Range("$A$5:$K$11")       
   NTit.Interior.Color = RGB(255, 0, 0)
   If Not Intersect(Target, NTit, NInf, NDat) Is Nothing Then

答案1

不起作用Intersect,因为每个参数必须有一个或多个公共单元格。这不是 OR 情况;而是 AND 情况。您基本上需要使用Target AND (NTit OR NInf OR NDat)。这可以通过Intersect与结合来实现Union

If Not Intersect(Target, Union(NTit, NInf, NDat)) Is Nothing Then

这看起来可能来自Worksheet_Change事件宏。如果是这种情况,那么您不必声明和分配WS。您可以直接用作ME工作表对象。我可以建议其他改进,但您需要编辑您的问题并发布更多代码,然后我才能看到这与其他因素的关系。

相关内容