Excel 循环遍历列中的合并单元格,以获取它们在VBA中的地址

Excel 循环遍历列中的合并单元格,以获取它们在VBA中的地址,excel,vba,Excel,Vba,我有一个专栏。比如A列,它有多个不同范围的合并单元格 例如,第一个单元格从A2合并到A15,而第二个合并单元格从A16合并到A115 我想遍历整个列以获得每个合并单元格的地址 下面的代码只对第一个单元格有效,但我想循环遍历A列中的所有单元格 Sub Macro() Dim rng As Range, rngStart As Range, rngEnd As Range Set rng = Range("A2") If rng.MergeCells Then

我有一个专栏。比如A列,它有多个不同范围的合并单元格

例如,第一个单元格从A2合并到A15,而第二个合并单元格从A16合并到A115

我想遍历整个列以获得每个合并单元格的地址

下面的代码只对第一个单元格有效,但我想循环遍历A列中的所有单元格

Sub Macro()

    Dim rng As Range, rngStart As Range, rngEnd As Range

    Set rng = Range("A2")

    If rng.MergeCells Then

        Set rng = rng.MergeArea
        Set rngStart = rng.Cells(1, 1)
        Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)

        MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address

    Else

        MsgBox "Not merged area"

    End If
End Sub
亚宏

变暗rng As范围 Dim rngStart As范围 调光范围

Set rng = Range("A2")

If rng.MergeCells Then

    Set rng = rng.MergeArea
    Set rngStart = rng.Cells(1, 1)
    Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)

    MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address

Else

    MsgBox "Not merged area"

End If
端接头


这是适用于单个单元格的代码

之所以只适用于单个单元格,是因为您将rng设置为单个单元格。因此,我对rng中的每个单元格都使用了a来循环a列,直到最后一行

Sub macro()

    Dim rng As Range, rngStart As Range, rngEnd As Range, cell As Range
    Dim ws As Worksheet
    Dim lRow As Long
    Dim arr() As String

    Set ws = ActiveSheet
    With ws
        lRow = .Cells(.Rows.Count, 1).End(xlUp).row 'Get the last row in the activesheet
        Set rng = .Range("A1:A" & lRow)
    End With

    For Each cell In rng
        If cell.MergeArea.Cells(1, 1).Address = cell.Address Then

            If cell.MergeArea.Cells.Count > 1 Then

                arr() = Split(cell.MergeArea.Address, ":")
                Set rngStart = Range(arr(0))
                Set rngEnd = Range(arr(1))
                MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address

            Else

                MsgBox "Not merged area"
            End If
        End If
    Next
End Sub

欢迎来到SO。最好粘贴您已经编写的代码。请在问题中包含您正在使用的代码,以便获得帮助。欢迎使用SO,您应该使用此代码编辑您的问题,而不是发布,因为应答代码通过循环贯穿整个列,但问题是它不会进入下一个合并单元格,而是进入下一个单元格,例如我的第一个单元格,即A1,是单非合并单元格。我的下一个单元格是从A2:A10合并而来的,后面的合并单元格是从A11:A29合并而来的,所以当代码运行时,它会跳过A1,因为它是单个单元格。对于即将到来的单元格,A2-它现在正确显示了地址,理想情况下,它应该直接移动到A11,但它没有移动到A3,它显示与A2相同的地址,并重复相同的地址,直到到达A10。您可以用代码修复此问题吗?我已编辑了答案,请尝试,如果有任何其他错误,请告诉我。