我有一个命令按钮,过滤一些数据,然后创建一个PDF打印。我目前有页面设置为自动调整行高,但文本感觉太拥挤,我希望找到一种方法来自动调整,然后添加填充或加倍的高度,使其看起来更干净。到目前为止,我尝试/发现的所有东西一次只能改变一行的高度。
我想做这样的事情:
Rows("1:100").AutoFit
Rows("1:100").RowHeight = Rows("1:100").RowHeight * 2
同时,我在这方面还是个初学者,只是通过阅读论坛来学习,所以如果我的解释不够,我很抱歉。
这是我现在的命令按钮:
Private Sub CommandButton1_Click()
Sheets("PRINT OUT").Visible = True
Range("A1").AutoFilter Field:=3, Criteria1:="YES"
With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.5)
.RightMargin = Application.InchesToPoints(0.5)
.TopMargin = Application.InchesToPoints(0.5)
.BottomMargin = Application.InchesToPoints(0.5)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.1)
.PaperSize = xlPaperA4
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
[a1:x99].ExportAsFixedFormat Type:=xlTypePDF, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Sheets("PRINT OUT").Visible = False
End Sub
如果你有相同高度的行,你可以这样写
调试。打印选择。RowHeight
,它会告诉你rowHeight,但如果任何一行有不同的高度,相同的代码将返回null。所以你的代码不工作,因为它试图乘以null。
做你要求的唯一方法是一行一行,但这在VBA中并不难做到,它只是像
这样的东西Sub ScaleRowHeight(vRange as range, vMultScale as double, vAddScale as double)
dim i as long
for i = 1 to vrange.rows.count
vRange.rows(i).rowHeight = vRange.rows(i).rowHeight * vMultScale + vAddScale
next i
End Sub
然后你可以在代码中通过
调用它Rows("1:100").AutoFit
call ScaleRowHeight(rows("1:100"),2,0)
但是你不会想让你的tall block的高度是原来的两倍,你可能只想给它们加一个固定的数值
Rows("1:100").AutoFit
call ScaleRowHeight(rows("1:100"),1,10)
干杯!