作者:乔山办公网日期:
返回目录:excel表格制作
去这里下载zd一个回宏,加载后即可答
http://dl.vmall.com/c0r0pevewp
有一个可以变通的方法。就是把你要合并的单元格分开不要搞成合并单元格的格式,然后把需要的单元格全部选中:设置单元格格式→对齐→水平对齐→跨列居中,再勾选自动换行就可以达到效果了。
判断一个单元格内的百字符串长度用Len函数,用法如下:
s = Len(Range("A1").Text)
这里的s就表示字符串有多少个字符组成的。
判断选中度的单元格是由几个小格子组成的可以这样内:
比如:
Sub yy()
[h6:k8].Merge '将h6:k8区域合并单元格
[h6].Select '选中H6:k8这个合并单元格
MsgBox Selection.Count '通过Selection.Count这个命令就可以得到选中的这个区域的单元格数目
End Sub让单元格自动容调整行高,用AutoFit,自动适应方法,用法如下:
Sub xx()
Range("A1:F6").Rows.AutoFit
End Sub
自动调整合并单元格行高原型
原理是:
因为独立单元格设置了自动换行后,高度会自动变化,利用这个特点,将合并单元格的内容复制到一个独
立单元格,并将这e799bee5baa6e79fa5e98193e59b9ee7ad94331个单元格格式设置成自动换行,且其宽度设置为合并区域宽度
(
合并区域宽度
=
合并区域中各
列宽度之和
)
,再将此时独立单元格的行高值设置到合并区域所在的行即可。
运行条件:创建一个名字为
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