自动调整合并单元格行高原型
原理是:
因为独立单元格设置了自动换行后,高度会自动变化,利用这个特点,将合并单元格的内容复制到一个独
立单元格,并将这个单元格格式设置成自动换行,且其宽度设置为合并区域宽度
(
合并区域宽度
=
合并区域中各
列宽度之和
)
,再将此时独立单元格的行高值设置到合并区域所在的行即可。
运行条件:创建一个名字为
temp
的
Sheet
表单
,
将下内容粘贴到
Excel
模块中。
VBA
程序如下:
Sub main()
MergeCellAutoFit "sheet1", 6, 2
End Sub
Sub MergeCellAutoFit(sSheet As String, mRow As Integer, mCol As Integer)
Dim mWidth As Double
Dim mSt, mEd As Integer
If Sheets(sSheet).Cells(mRow, mCol).MergeCells Then
mSt = Sheets(sSheet).Cells(mRow, mCol).MergeArea.Column
mEd = mSt + Sheets(sSheet).Cells(mRow, mCol).MergeArea.Columns.Count() - 1
For i = mSt To mEd
mWidth = mWidth + Sheets(sSheet).Columns(i).ColumnWidth
Next i
Sheets("temp").Columns(1).ColumnWidth = mWidth + (mEd - mSt) * 0.6
With Sheets("temp").Range("A1")
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlTop
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Sheets(sSheet).Cells(mRow, mCol).Copy
Sheets("temp").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:=False, Transpose:=False
Sheets(sSheet).Rows(mRow).RowHeight = Sheets("temp").Rows(1).RowHeight
Sheets("temp").Columns(1).Delete
Else
MsgBox "
不是合并单元格!
"
End If
End Sub
常规的方法(无效):
(选中你需要操作的单元格-鼠标右键-设置单元格格式-对齐
里面分别可以看到“自动换行”和“合并单元格”选项,勾选它们)
在普通单元格可以实现,但在合并后的单元格中无效,换行的内容会被隐藏,我需要自适应行高。
别说去拖动行高显示被隐藏的内容。
听说可以用宏来实现,请说明详细方法步骤,请勿拷贝一对代码过来忽悠我。 补充: 简单拉方法一、您输入一行后想换行按Alt+Enter然后继续输入,
就可以实现换行了。
(如果看不到就加大行高)方法二、自动换行您选中单元格右键设置单元格格式-“对齐”—
“文本控制”-“自动换行”-确定
注释:自动换行,当您写满一行的时候就会自动转向下一行。
你这说的是单元格,对合并后的单元格无效!请不要复制来忽悠人! 补充: 要迩自己好好的去学习。
在实践中漫漫的摸索出来。不懂最好是去查资料。