Excel自动调整行高不';不能在带换行符的meged单元格上工作

Excel自动调整行高不';不能在带换行符的meged单元格上工作,excel,vba,Excel,Vba,我正在以编程方式将一些文本插入行中的合并单元格中。我已经设置了换行文本,并希望根据需要扩展行高以容纳多行文本。在填充单元格后,我通过编程应用AutoFit,但这不起作用。后来我发现一篇知识库文章说AutoFit不适用于合并的单元格!我可以尝试计算容纳包装文本行数所需的行高。但我真的不想爬到计算字符宽度等任何想法感激 问题归功于David(我有一个完全相同的问题,只是在这里转载给后代)我发现了一个VB宏,它将模拟活动工作表上任何合并单元格的自动拟合。来源:MrExcel.com中的抵免 子Auto

我正在以编程方式将一些文本插入行中的合并单元格中。我已经设置了换行文本,并希望根据需要扩展行高以容纳多行文本。在填充单元格后,我通过编程应用AutoFit,但这不起作用。后来我发现一篇知识库文章说AutoFit不适用于合并的单元格!我可以尝试计算容纳包装文本行数所需的行高。但我真的不想爬到计算字符宽度等任何想法感激

问题归功于David(我有一个完全相同的问题,只是在这里转载给后代)

我发现了一个VB宏,它将模拟活动工作表上任何合并单元格的自动拟合。来源:MrExcel.com中的抵免

子AutoFitMergedCellRowHeight()
将CurrentRowHeight设置为Single,将MergedCellRgWidth设置为Single
Dim Curr单元格作为范围
Dim ActiveCellWidth为单个,PossNewRowHeight为单个
变暗起始单元格作为范围,c作为范围,合并单元格作为范围,单元格作为范围
Dim a()作为字符串,isect作为范围,i
'记下当前活动单元格
设置StartCell=ActiveCell
'创建包含包装文本的合并单元格地址数组
对于ActiveSheet.UsedRange中的每个c
如果c
与c.MergeArea
如果.Rows.Count=1且.WrapText=True,则
如果MergeRng不算什么,那么
设置MergeRng=c.MergeArea
重拨a(0)
a(0)=c.MergeArea.Address
其他的
设置isect=Intersect(c,MergeRng)
如果isect什么都不是,那么
设置MergeRng=Union(MergeRng,c.mergerArea)
重播保留a(UBound(a)+1)
a(UBound(a))=c.MergeArea.Address
如果结束
如果结束
如果结束
以
如果结束
下一个c
Application.ScreenUpdating=False
'循环通过合并的单元格
对于i=0到UBound(a)
范围(a(i))。选择
使用ActiveCell.MergeArea
如果.Rows.Count=1且.WrapText=True,则
'Application.ScreenUpdate=False
CurrentRowHeight=.RowHeight
ActiveCellWidth=ActiveCell.ColumnWidth
对于选择中的每个单元格
MergedCellRgWidth=CurrCell.ColumnWidth+MergedCellRgWidth
下一个
.MergeCells=False
.Cells(1).ColumnWidth=MergedCellRgWidth
.EntireRow.AutoFit
PossNewRowHeight=.RowHeight
.Cells(1).ColumnWidth=ActiveCellWidth
.MergeCells=True
.RowHeight=IIf(当前RowHeight>PossNewRowHeight_
CurrentRowHeight,PossNewRowHeight)
如果结束
以
MergedCellRgWidth=0
接下来我
StartCell。选择
Application.ScreenUpdating=True
“清理
设置单元格=无
设置StartCell=无
设置c=无
设置MergeRng=Nothing
设置单元格=无
端接头

对于任何计划使用此功能的人来说,这只是一个提醒:如果在多行中合并了单元格,则此功能将不起作用。