乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 求<em>excel</em> <em>VBA</em> 自动<e

求<em>excel</em> <em>VBA</em> 自动<e

作者:乔山办公网日期:

返回目录:excel表格制作


1、以B4竖向打印为例,首先得到A列非空的行数m和非空的列数n,那么单行的行宽大约是720/m和单列的列宽是83/n时,大概刚好打印为一页。如果你打印预览不是刚好一页,你可以调整720和83这两个数7a686964616fe59b9ee7ad94332字。
通过改变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

按楼主提供的信息,G177:G700区域的单元格可能为空或值为0,页G700以后应该还有数据。为打印节约纸张,需要把G177:G700区域的单元格可能为空或值为0的行高设置为0,而有数据且不为0的行高为19.5。
试试如下操作:
1.按Alt+F11打开VBE代码窗口,执行菜单命令“插入/模块”,在右边空白的代码窗口中粘贴如下代码。
Sub 行高设置()
Application.ScreenUpdating = False '关闭屏幕刷新
For i = 177 To 700
If ActiveSheet.Cells(i, 7) = "" Or ActiveSheet.Cells(i, 7) = 0 Then 'G列中单元格为空或为0
ActiveSheet.Rows(i).RowHeight = 0 '单元格所在行高为0
ElseIf ActiveSheet.Cells(i, 7) <> "" And ActiveSheet.Cells(i, 7) <> 0 Then 'G列单元格不为空且不为0
ActiveSheet.Rows(i).RowHeight = 19.5 '单元格所在行高为19.5
End If
Next i
Application.ScreenUpdating = False '关闭屏幕刷新
End Sub
2.回到工作表,在“视图/工具栏”中单击选择“窗体”,在窗体上单击“按钮”,然后在工作表合适位置,按住鼠标左键拖动画一个命令按钮(矩形形状)。
3.当画好命令按钮后松开鼠标左键,系统自动打开“指定宏”对话框,在列表中 双击选择宏“行高设置”。
4.再右击画好的命令按钮,在快捷菜单中选择“编辑文字”,输入“行高设置”后,单击工作表任意位置,再关闭“窗体”。
5.用鼠标单击(用鼠标指向命令按钮,鼠标指针变成手形)命令按钮,执行操作。
说在后面:
事实上为了方便操作,当不打印当前工作表时,不可能总是把G177:G700区域内空单元格或0值单元格所在行总以行高为0显示,这总是不方便的。具体处理可以e69da5e887aae799bee5baa6e79fa5e98193338按下面方法进行。
在VBE窗口中(左边工程下),双击当前工作表(要打印的工作表)标签,打开工作表事件代码窗口,在窗口中粘贴如下代码,每当激活当前工作表时,自动调整行高为0的行为常规行高。
Private Sub Worksheet_Activate()
ActiveSheet.Cells.EntireRow.AutoFit '自动调整行高
End Sub
上述代码以03版本测试通过。
仅供参考!
zdA1单元格为例

Sub aa()
I = 1
Set rng = Range("a1")
Dim H1 As Single, H2 As Single
rng.WrapText = False
rng.Rows.AutoFit
H1 = rng.Height
rng.WrapText = True
rng.Rows.AutoFit
H2 = rng.Height
n = H2 \ H1
MsgBox "单元格" & rng.Address & " 有 " & n & " 行!"
Select Case n
Case 1
rng.RowHeight = 20
Case 2
rng.RowHeight = 40
Case 3
rng.RowHeight = 60
Case 4
rng.RowHeight = 80
End Select
End Sub

试了下cells.EntireRow.Autofit Cells.EntireColumn.Autofit 可以用的
可能是你前面没指定那个 sheet 吧。

Worksheets("日历").Cells.EntireColumn.Autofit

相关阅读

  • 求<em>excel</em> <em>VBA</em> 自动<e

  • 乔山办公网excel表格制作
  • 1、以B4竖向打印为例,首先得到A列非空的行数m和非空的列数n,那么单行的行宽大约是720/m和单列的列宽是83/n时,大概刚好打印为一页。如果你打印预览不是刚好一页,你可以调整720和83这
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网