实现自适应高度

天修改一个用Excel的报表,有一个数据格是跨两列,一般单格的数据格用自动换行就可以实现自适应高度,但是跨列是不行的.查找google良久,也没发现适合的办法,一阵头痛之后,突然有了灵感,于是马上做试验,还真的实现了.先写出来,如果有困于这个问题的朋友偶然路过,或许还能有一点用处.
原理:在另外一个sheet里面利用单元格换行和自适应高度的特性,将一个 试验单元格宽度设置成 实际跨列单元格的宽度,然后将需要输入的字符放入该 试验单元格,取得高度返回给 实际跨列单元格就可以了.

以下是vb的代码
PrivateSubCommand1_Click()
DimobjExcelAsNewExcel.Application
DimwkSheetAsExcel.Worksheet
objExcel.Workbooks.Open"E:\book1.xls"

SetwkSheet=Worksheets("Sheet1")
wkSheet.Select
DimiWidthAsDouble
iWidth=wkSheet.Columns("A:A").ColumnWidth+wkSheet.Columns("B:B").ColumnWidth

SetwkSheet=Worksheets("Sheet2")
wkSheet.Select
wkSheet.Columns("A:A").ColumnWidth=iWidth

Range("A1").Select
WithSelection
.HorizontalAlignment=xlGeneral
.VerticalAlignment=xlCenter
.WrapText=True
.Orientation=0
.AddIndent=False
.IndentLevel=0
.ShrinkToFit=False
.ReadingOrder=xlContext
.MergeCells=False
EndWith

ActiveCell.Value="dsfsdafsdafasfsdafsadfdsafsdafa"
DimiHeightAsDouble
iHeight=ActiveCell.RowHeight

SetwkSheet=Worksheets("Sheet1")
wkSheet.Select
Range("A1:B1").Select

WithSelection
.HorizontalAlignment=xlGeneral
.VerticalAlignment=xlCenter
.WrapText=True
.Orientation=0
.AddIndent=False
.IndentLevel=0
.ShrinkToFit=False
.ReadingOrder=xlContext
.MergeCells=True
EndWith
Rows("1:1").Select
Selection.RowHeight=iHeight

Range("A1:B1").Select
ActiveCell.Value="dsfsdafsdafasfsdafsadfdsafsdafa"

objExcel.ActiveWorkbook.SaveAs"e:\book2.xls"
objExcel.AlertBeforeOverwriting=False
objExcel.Quit
EndSub


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值