VBA自动适配,然后在过滤前添加空白



我有一个命令按钮,过滤一些数据,然后创建一个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)

干杯!

相关内容

  • 没有找到相关文章

最新更新