我如何有效地执行select和联合的交叉?

我正在编写一个代码,只要这个select在一个范围的联合中完全不被使用,就会用一种颜色填充用户select。

If Not Application.Intersect(Selection, Union(Range("B4:X23"), Range("Z4:AH23"), _ Range("B25:X32"), Range("Z25:AH32"),Range("B34:X44"), _ Range("Z34:AH44"))) Is Nothing Then Selection.Interior.ColorIndex = modButtons.intColour End If 

对于单个范围执行此行几次不是一个选项,因为在我的实际代码中有30个范围集。

所以问题在于,当活动单元格在范围之外时,它不会填充select单元格中的单元格,如果活动单元格在范围之内,它将填充select范围之外的单元格。

这取决于你想要达到的目标。

如果在部分重叠的情况下,您只想填充select的相交范围,请使用:

 Dim rngIntersect As Range Set rngIntersect = Intersect(Selection, Union(Range("B4:X23"), Range("Z4:AH23"), _ Range("B25:X32"), Range("Z25:AH32"), Range("B34:X44"), _ Range("Z34:AH44"))) If Not rngIntersect Is Nothing Then rngIntersect.Interior.ColorIndex = modButtons.intColour End If 

如果您只想在完全相交的情况下填写所选内容,请使用:

 Dim rngIntersect As Range Set rngIntersect = Intersect(Selection, Union(Range("B4:X23"), Range("Z4:AH23"), _ Range("B25:X32"), Range("Z25:AH32"), Range("B34:X44"), _ Range("Z34:AH44"))) If Not rngIntersect Is Nothing And rngIntersect.Cells.Count = Selection.Cells.Count Then Selection.Interior.ColorIndex = modButtons.intColour End If