2,463
社区成员
发帖
与我相关
我的任务
分享
Private Type ExcelRange
begRow As Integer
endRow As Integer
begCol As Integer
endCol As Integer
End Type
Sub Test()
Dim r As Range
Dim begRow As Integer
Dim begCol As Integer
Dim endRow As Integer
Dim endCol As Integer
Dim nPerRow As Integer
Dim nRows As Integer
Dim nCols As Integer
Dim nPerRangeEndCol As Integer
Dim myExcelRanges() As ExcelRange '所有合并单元格集合
Dim lastExcelRange As ExcelRange
begRow = 1
ReDim myExcelRanges(0)
For Each r In ThisWorkbook.Sheets(1).UsedRange
If lastExcelRange.endCol < r.Column Or r.Row > lastExcelRange.endRow Then
If r.Row > lastExcelRange.endRow Then
lastExcelRange.begCol = 0
End If
begRow = r.Row
endRow = begRow + r.MergeArea.Rows.Count - 1
begCol = r.Column
endCol = begCol + r.MergeArea.Columns.Count - 1
ReDim Preserve myExcelRanges(UBound(myExcelRanges) + 1)
myExcelRanges(UBound(myExcelRanges)).begRow = begRow
myExcelRanges(UBound(myExcelRanges)).endRow = endRow
myExcelRanges(UBound(myExcelRanges)).begCol = begCol
myExcelRanges(UBound(myExcelRanges)).endCol = endCol
lastExcelRange = myExcelRanges(UBound(myExcelRanges))
End If
Next
End Sub