在 Excel VBA 中,可以使用 Application 对象的 Intersect 方法获取两个或多个单元格区域的交叉区域。
Intersect 方法语法
Application.Intersect (Arg1, Arg2, ...)
Intersect 方法必须指定最少两个参数,最多可以指定30个参数,所有参数均应为 Range 对象。如果区域之间没有交集则返回 Nothing
。如果它们相交,返回值则为它们的交叉区域。如果指定了不同工作表中的一个或多个区域,则返回错误。
示例一
以下示例为一个带两个参数类型为 Range 的自定义过程,如果这两个参数引用的单元格区域相交,则返回交叉区域的地址,如果不相交则返回一条信息“不存在交叉区域”。
Sub IntersectRange(rng1 As Range, rng2 As Range)
Dim rngTarget As Range
Set rngTarget = Application.Intersect(rng1, rng2)
If rngTarget Is Nothing Then
MsgBox "不存在交叉区域。"
Else
MsgBox "交叉区域地址为:" & rngTarget.Address
End If
Set rngTarget = Nothing
End Sub
使用 Call 语句调用 IntersectRange 过程,来确认两个单元格区域是否相交:
Sub TestIntersect()
Call IntersectRng(Range("C3:D8"), Range("B5:F6"))
End Sub
示例二
以下示例比较 Worksheet.Range 属性、 Application.Union 方法和 Intersect 方法。
Range("A1:A10").Select 'Selects cells A1 to A10.
Range(Range("A1"), Range("A10")).Select 'Selects cells A1 to A10.
Range("A1, A10").Select 'Selects cells A1 and A10.
Union(Range("A1"), Range("A10")).Select 'Selects cells A1 and A10.
Range("A1:A5 A5:A10").Select 'Selects cell A5.
Intersect(Range("A1:A5"), Range("A5:A10")).Select 'Selects cell A5.