跳到主要内容

联合单元格区域

在 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

评论

您的电子邮件地址不会显示出来。*号为必填项。