作者:乔山办公网日期:
返回目录:excel表格制作
自动换行的话和没合并过的方法一样,自动调整大小的话没有发现能成批百的自动调整,估计合并度过的单位格EXCEL把当成多个单元格看吧,就像数据库里套用excel表数据一样,没合并的可以用,合并过的就不行。网上到专是有这种问题的解决方法,是个VB代码,发给你试试看吧。
Sub Macro1()
Dim i%, x%
For i = 7 To [e65536].End(xlUp).Row
Rows(i).AutoFit
x = Rows(i).Height
Rows(i).RowHeight = x + 10
Next i
End Sub
如果你有这个问题的新属方法请给我也发个过来,呵呵
有一个可以变通的方法。就是把你要合并的单元格分开不要搞成合并单元格的格式,然后把需要的单元格全部选中:设置单元格格式→对齐→水平对齐→跨列居中,再勾选自动换行就可以达到效果了。
合并单元格应该本身就不能自动调高。
有换行的好象也不能自动调高,需要手动调的。
自动调整合并单元格行高原型
原理是:
因为独立单元格设置了自动换行后,高度会自动变化,利用这个特点,将合并单元格的内容复制到一个独
立单元格,并将这个单元格格式设置成自动换行,且其宽度e79fa5e98193e4b893e5b19e331设置为合并区域宽度
(
合并区域宽度
=
合并区域中各
列宽度之和
)
,再将此时独立单元格的行高值设置到合并区域所在的行即可。
运行条件:创建一个名字为
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