对于一些合并单元格不能设置自动行高,以下代码可以解决自动行高
红色变量strarr 设置自动行高的单元格域区名称。名称在名称管理器里创建。
蓝色为 clickarr 表示点击这个单元格时执行代码进行自动行高。
将代码放置 Worksheet_SelectionChange 即可
Dim MergeWidth As Single
Dim cM As Range
Dim AutoFitRng As Range
Dim CWidth As Double
Dim NewRowHt As Double
Dim str01 As String
Dim selearr As String
Dim rangearr As Range
Dim strarr As String
strarr = "_ESF1788" '设置调整单元格的数据区名称
clickarr = "$L$4" '按钮地址
If Target.Address = clickarr Then
Set rangearr = Range(Range(strarr).Address)
Application.ScreenUpdating = False
For i = 1 To rangearr.Rows.Count
str01 = rangearr.Cells(i, 1).Address
Set AutoFitRng = Range(Range(str01).MergeArea.Address)
With AutoFitRng
.MergeCells = False
CWidth = .Cells(1).ColumnWidth
MergeWidth = 0
For Each cM In AutoFitRng
cM.WrapText = True
MergeWidth = cM.ColumnWidth + MergeWidth
Next
MergeWidth = MergeWidth + AutoFitRng.Cells.Count * 0.66
.Cells(1).ColumnWidth = MergeWidth
.EntireRow.AutoFit
NewRowHt = .RowHeight
.Cells(1).ColumnWidth = CWidth
.MergeCells = True
.RowHeight = NewRowHt + 5
End With
Next
Application.ScreenUpdating = True
End If