用vba实现excel的行高和列宽随行数和列数的变化而自动调整?

例如:以第A列内容判断行高,相同的打印在一页,A列内容多说明行数多,则行高就小。还有列数,根据列数的多少自动调整列宽。

1、以B4竖向打印为例,首先得到A列非空的行数m和非空的列数n,那么单行的行宽大约是720/m和单列的列宽是83/n时,大概刚好打印为一页。如果你打印预览不是刚好一页,你可以调整720和83这两个数字。
通过改变RowHeight和ColumnWidth值,VBA可以调节行高和列宽。
你在A列追加一些数据,或者在第一行的最右面追加些数据,再执行test1程序看打印预览是否还是自动调整到一个整页:
Sub sss()
'非空行数为m,非空列数为n
m = [A65535].End(xlUp).Row
n = [iv1].End(xlToLeft).Column
Rows("1:" & m).RowHeight = 720 / m
Range(Cells(1, 1), Cells(1, n)).ColumnWidth = 83 / n
End Sub

2、不建议你用上面那个改变行高和列宽的方法,因为字体你还要编程序进行改变。简单的办法就是把要打印的区域用VBA设置成整页.比如test2这个样子:
Sub test2()
m = [A65535].End(xlUp).Row
n = [iv1].End(xlToLeft).Column
With ActiveSheet.PageSetup
.PrintArea = ActiveSheet.Range(Cells(1, 1), Cells(m, n)).Address
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
End Sub
温馨提示:答案为网友推荐,仅供参考
相似回答