如何在vba中编写通用的处理excel合并单元格的代码?

在excel中经常会有合并单元格,处理含合并单元格的表格也是一项经常的工作。

为了方便快速地编写处理含合并单元格的代码,下文列举了一个通用的处理excel合并单元格的代码:

Sub QQ1722187970()
    Dim oWK As Worksheet
    '定义要处理的表格对象变量
    Set oWK = Sheet1
    Dim oRng As Range
    Dim oRngMerge As Range
    Dim sTemp As String
    With oWK
        '返回没有合并单元格的列的最后一行
        iRow = .Range("b65536").End(xlUp).Row + 1
        '为了避免最后的合并单元格没有结尾,添加辅助单元格
        .Cells(iRow, "b") = "temp"
        '从有数据的单元格开始遍历
        For i = 2 To iRow - 1
            '判断有合并单元格的列区域
            Set oRng = .Cells(i, "a")
            '每次遇到合并单元格的开始时,临时变量清空
            If Len(oRng) Then sTemp = ""
            '如果存在合并单元格,开始处理
            If oRng.MergeCells Then
                '第一次处理时sTemp为空
                If Len(sTemp) = 0 Then
                    '定义合并的单元格区域
                    Set oRngMerge = oRng.MergeArea
                    '遍历合并的单元格区域占用的单元格区域
                    For j = i To i + oRngMerge.Count - 1
                        '要处理的代码
                    Next j
                Else
                    '如果临时变量有值了,则不再遍历合并单元格占用的单元格区域
                    '要处理的代码
                End If
            Else
                '没有合并单元格的处理代码
                '**************'
            End If
        Next i
        '清除辅助的单元格
        .Cells(iRow, "b") = ""
    End With
    MsgBox "操作完毕!"
End Sub
       

发表评论