判断一个单元格区域是否包含在另一个单元格区域中,可以使用 Application.Union 方法或 Application.Intersect 方法。
Application.Union 方法
以下示例利用 Application.Union 方法来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。
Function IncludeRange1(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
IncludeRange1 = True
End If
End If
Set rngUnion = Nothing
End Function
自定义函数 IncludeRange1
通过判断单元格区域 rng1 与单元格区域 rng2 的合并区域的地址是否与单元格区域 rng2 的地址一致,来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。如果两个地址一致,则表示单元格区域 rng1 包含在单元格区域 rng2 中,并返回 True
,否则该函数返回 False
。
运行如下测试代码后,将显示结果为 True
。
Sub test1()
MsgBox IncludeRange1(Range("B3:D6"), Range("A2:F8"))
End Sub
Application.Intersect 方法
以下示例利用 Application.Intersect 方法来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。
Function IncludeRange2(ByVal rng1 As Range, ByVal rng2 As Range) As Boolean
Dim rngIntersect As Range
Set rngIntersect = Application.Intersect(rng1, rng2)
If Not rngIntersect Is Nothing Then
If rngIntersect.Address = rng1.Address Then
IncludeRange2 = True
End If
End If
Set rngIntersect = Nothing
End Function
自定义函数 IncludeRange2
通过判断单元格区域 rng1 与单元格区域 rng2 的交叉区域的地址是否与单元格区域 rng1 的地址一致,来判断单元格区域 rng1 是否包含在单元格区域 rng2 中。如果两个地址一致,则表示单元格区域 rng1 包含在单元格区域 rng2 中,并返回 True
,否则该函数返回 False
。
运行如下测试代码后,将显示结果为 True
。
Sub test2()
MsgBox IncludeRange2(Range("C3:D5"), Range("B1:H9"))
End Sub