vba 判断两个合并单元格是否相邻

vba 判断两个合并单元格是否相邻,

img

怎么才可以判断他们是相邻的。

Sub CheckMergedCellsAdjacency()
    Dim rng1 As Range, rng2 As Range
    Set rng1 = Range("A1:B2")  ' 假设这是第一个合并单元格
    Set rng2 = Range("B2:C3")  ' 假设这是第二个合并单元格

    ' 判断行列坐标是否相邻
    If Abs(rng1.Row - rng2.Row) <= 1 And Abs(rng1.Column - rng2.Column) <= 1 Then
        MsgBox "The merged cells are adjacent."
    Else
        MsgBox "The merged cells are not adjacent."
    End If
End Sub

可以通过函数 MergeArea 函数获取合并单元格的范围,根据范围的数值是否邻近做出判断

好像直接判断的话,是没有判断函数的,只能换种思路来实现。

MergeArea是对合并单元格的处理,判断不了是否相邻。

望采纳!!!代码如下:


Sub CheckAdjacent()
Dim rangeA As Range
Dim rangeB As Range
Set rangeA = Sheet1.Range("A1")
Set rangeB = Sheet1.Range("B1")
If rangeA.MergeArea.Address = rangeA.Address And rangeB.MergeArea.Address = rangeB.Address Then
' A1 和 B1 相邻
Else
' A1 和 B1 不相邻
End If
End Sub





使用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

可以使用以下步骤来判断两个已合并的单元格是否相邻:

1、在工作簿中获取第一个单元格的行号和列号。可以使用 Range 对象的 Row 和 Column 属性来获取这些值。

2、在工作簿中获取第二个单元格的行号和列号。

3、比较这两个单元格的行号和列号。如果这两个单元格的行号和列号相同,就它们已经合并为一个单元格。如果这两个单元格的行号或列号相差 1,就它们是相邻的。

用于判断第一个选定的单元格是否与第二个选定的单元格相邻的示例代码:

Sub CheckAdjacency()
    Dim rng1 As Range, rng2 As Range
    Set rng1 = Selection(1)
    Set rng2 = Selection(2)
    
    If rng1.Row = rng2.Row And rng1.Column = rng2.Column Then
        MsgBox "The cells are merged."
    ElseIf Abs(rng1.Row - rng2.Row) <= 1 And Abs(rng1.Column - rng2.Column) <= 1 Then
        MsgBox "The cells are adjacent."
    Else
        MsgBox "The cells are not adjacent."
    End If
End Sub

在这段代码中,使用了 Selection 对象来获取用户选定的单元格。也可以使用其他方法来获取单元格对象,例如使用 Cells 属性或 Range 对象的 Address 属性。
仅供参考,望采纳,谢谢。

使用js宏很简单