The Row.AutoFit method of Excel (2003) ignores merged cells. The MergeAndFit function below can be used to auto-fit the row height for a merged cell range. (It is an enhanced version of the AutoFitMergedCellRowHeight function of Jim Rech.)
' Merges a cell range, wraps text and auto-fits the row height.
Public Sub MergeAndFit(ByVal r As Range)
' Because the Row.AutoFit method ignores merged cells, we temporarily expand the first column of
' the cell range to the width of the whole cell range and call AutoFit with the un-merged cell.
Dim Row As Range: Set Row = r.Rows(1)
Dim Column1 As Range: Set Column1 = r.Columns(1)
Dim RangeWidth: RangeWidth = r.Width
Dim OldColumn1Width: OldColumn1Width = Column1.ColumnWidth
Dim i As Integer
For i = 1 To 3 ' approximation of Column1.ColumnWidth in 3 steps
Column1.ColumnWidth = RangeWidth / Column1.Width * Column1.ColumnWidth
Next
r.WrapText = True
r.MergeCells = False
Dim OldRowHeight: OldRowHeight = Row.RowHeight
Row.AutoFit
Dim FitRowHeight: FitRowHeight = Row.RowHeight
r.MergeCells = True
Column1.ColumnWidth = OldColumn1Width
Row.RowHeight = IIf(FitRowHeight > OldRowHeight, FitRowHeight, OldRowHeight)
End Sub
Example of how to use the MergeAndFit function
Range("B2") = "abc " & String(100,"x") & " xyz"
MergeAndFit Range("B2:D2")
Author: Christian d'Heureuse (www.source-code.biz, www.inventec.ch/chdh)
License: Free / LGPL
Index