打印时如何自动设置分页?

时间:2017-04-10 07:40:17

标签: excel vba excel-vba

用户在Excel工作表中插入了大量数据。我创建了一个用于拉链的命令按钮。由于数据将来会被用户添加,所以我无法设置分页符。我希望分页能够处于合适的位置。

enter image description here

例如上面的图片,我不想在不同的页面中打印数据组。如果没有足够的空间将data3打印在与数据和数据2相同的工作表上,则分页会自动将data3调整为新页面。

这是我的代码

Sub pagebreak()

Application.ScreenUpdating = False

Dim lastrow As Long, rngTemp As Range

lastrow = Sheet2.Range("E1").Offset(Rows.count - 1).End(xlUp).Row
Set rngTemp = Sheet2.Range("E11")

Do While rngTemp.Row <> lastrow
    Set rngTemp = Sheet2.Range("E11", rngTemp.Offset(75)).Find(What <> vbNull, SearchDirection:=xlPrevious)
    rngTemp.Parent.HPageBreaks.Add Before:=rngTemp.Offset(1, -7)
Loop

Application.ScreenUpdating = True

End Sub

根据上面的代码,我将把75行的最大数据放在一个页面中。为了避免不正确的分页,我将检查分离部分(空白灰色行),我已经在侧面放置了一些关键字(测试非空白)。但是这段代码不起作用。有人可以帮忙修复代码吗?

1 个答案:

答案 0 :(得分:0)

从第75行循环并查找空单元格(灰色单元格)。

Sub PBs()

Dim x As Integer

For x = 75 To 1 Step -1  ' loop backwards from row 75 to find the first empty cell

     If IsEmpty(Cells(x, 1)) Then

         ActiveSheet.HPageBreaks.Add Cells(x, 1)
         Exit For

     End If

Next x

End Sub

你提到工作表应该总是75行,如果不是这种情况(例如用户增加了行的大小),你必须根据我的评论来测量每行的高度。