在 Excel VBA 中,可以使用 Application 对象的 Union 方法将两个或多个单元格区域联合起来,返回联合后的新区域。
Union 方法语法
Application.Union (Arg1, Arg2, ...)
Union 方法必须指定最少两个参数,最多可以指定30个参数,所有参数均应为 Range 类型。
示例一
假设有以下三个单元格区域:
' 区域 A1:B2
Set Range1 = Range("A1:B2")
' 区域 B2:C3
Set Range2 = Range("B2:C3")
' 区域 C3:D4
Set Range3 = Range("C3:D4")
要将这三个区域联合为一个区域,可以使用以下代码:
Set UnionRange = Union(Range1, Range2, Range3)
示例二
以下示例比较 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.
示例三
以下示例利用 Application.Union 方法来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。
Function IncludeRange(ByVal rng1 As Range, ByVal rng2 As Range) As Boolean
Dim rngUnion As Range
Set rngUnion = Application.Union(rng1, rng2)
If Not rngUnion Is Nothing Then
If rngUnion.Address = rng2.Address Then
IncludeRange = True
End If
End If
Set rngUnion = Nothing
End Function
自定义函数 IncludeRange
通过判断单元格区域 rng1 与单元格区域 rng2 的合并区域的地址是否与单元格区域 rng2 的地址一致,来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。如果两个地址一致,则表示单元格区域 rng1 包含在单元格区域 rng2 中,并返回 True
,否则该函数返回 False
。
运行如下测试代码后,将显示结果为 True
。
Sub test()
MsgBox IncludeRange(Range("B3:D6"), Range("A2:F8"))
End Sub