可以用下面的代码实现(假设要判断的两个单元格为A1和B1):
Sub main()
Set a= Range("A1").MergeArea
Set b = Range("A1").MergeArea
If a.Address = b.Address Then
MsgBox "同一合并区域"
Else
MsgBox "不是同一合并区域"
End If
End Sub
这里用到的原理,是判断两个单元格合并区域的地址是否一致。
关于此例中用到的MergeArea的相关知识:
MERGEAREA:返回一个 Range对象,该对象代表包含指定单元格的合并区域。如果指定的单元格不在合并区域内,则该属性返回指定的单元格。只读。Variant 类型。
expression.MergeArea
expression 必需。该表达式返回“应用于”列表中的对象之一。
说明
MergeArea属性只应用于单个单元格区域。
本示例为包含单元格 A3 的合并区域赋值:
Set ma = Range("a3").MergeArea
If ma.Address = "$A$3" Then
MsgBox "not merged"
Else
ma.Cells(1, 1).Value = "42"
End If
使用mergearea属性获取合并区域对象,再用address属性得到它们的地址,如果相同就是在同一合并区域。
例
Sub c()
Set s = Range("a1").MergeArea
Set n = Range("b1").MergeArea
If s.Address = n.Address Then
MsgBox "同一合并区域"
Else
MsgBox "不在同一合并区域"
End If
End Sub
比如 A1~A5合并成A1
判断B1,C1是否在A1中
if instr(1,a1,b1)>0 then msgbox("b1在a1中存在")
if instr(1,a1,c1)>0 then msgbox("c1在a1中存在")
if (instr(1,a1,b1)>0) * (instr(1,a1,c1)>0) then msgbox("b1、c1在a1中存在")
用 MergeArea 属性返回合并的区域,
然后判断各个单元格是否在上述区域内即可