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


0

相交不起作用。

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

昏暗的WS作为工作表集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

请花一点时间对这个问题重新措辞,以使其更容易理解您正在尝试什么以及您的问题是什么。阅读如何提问可能会有所帮助。
CharlieRB

当我运行Change Event时,通常,如果输入数据在范围之外的单元格中,相交部分必须跳过后面的代码;如果输入数据在范围内,则交叉部分必须执行代码,但实际上每次都跳过代码。我知道每个范围都是正确的,因为我绘制了,这一定是相交中的ligne错误吗?谢谢您的帮助。
Anao 2015年

Answers:


2

Intersect不工作,因为每个参数必须有一个共同的细胞或细胞。这不是“或”的情况;它是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用作工作表对象。我可以提出其他改进建议,但您需要先编辑问题并发布更多代码,然后才能看到它与其他因素的关系。


这是一个很好的答案。
Raystafarian 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.