Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 打印时如何自动设置分页符?_Vba_Excel - Fatal编程技术网

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

Vba 打印时如何自动设置分页符?,vba,excel,Vba,Excel,我在excel表格中插入了大量用户数据。我创建了一个命令按钮,用于选择。由于数据将由用户在将来添加,因此我无法设置分页符。我希望分页符位于正确的位置 例如上面的图片,我不想在不同的页面中打印数据组。如果没有足够的空间将数据3打印在与数据和数据2相同的页面上,分页符会自动将数据3调整到新页面中 这是我的密码 Sub pagebreak() Application.ScreenUpdating = False Dim lastrow As Long, rngTemp As Range las

我在excel表格中插入了大量用户数据。我创建了一个命令按钮,用于选择。由于数据将由用户在将来添加,因此我无法设置分页符。我希望分页符位于正确的位置

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

这是我的密码

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
Sub-pagebreak()
Application.ScreenUpdating=False
最后一行变暗为长,rngTemp为范围
lastrow=Sheet2.范围(“E1”).偏移量(Rows.count-1).结束(xlUp).行
设置rngTemp=Sheet2.范围(“E11”)
在rngTemp.Row最后一行时执行
设置rngTemp=Sheet2.Range(“E11”,rngTemp.Offset(75)).Find(What-vbNull,SearchDirection:=xlPrevious)
rngTemp.Parent.HPageBreaks.Add Before:=rngTemp.Offset(1,-7)
环
Application.ScreenUpdating=True
端接头

基于上面的代码,我将在一个页面中只放置75行的最大数据。为了避免不正确的分页符,我将检查分隔部分(空白灰色行),我已经在旁边放了一些关键字(非空白测试)。但是,此代码不起作用。有人能帮忙修复代码吗?

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


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

我们不是“为我编写代码”网站;请展示您的尝试(我们需要一个)。@cybermonkey对这个不完整的问题表示抱歉。我已经编辑了这个问题。在Excel中,一张工作表能容纳多少行的问题是出了名的难以回答。Excel本身提供了缩小行高的功能,这本身就提供了一个解决方案,但使任何其他解决方案更加困难。你必须先降低你的期望值。然后你将不得不在研究和编程上投入很多时间,这将是值得的,因为你将学到很多。最后,你将不得不接受你降低的期望值的一半。我是根据经验说的。代码运行良好,但它会为每个数据设置分页符。我想要的是在一页中放置最大的数据集,而不是在一页中用空白行分隔的每个数据。好的,然后你需要检查每行占多少点,每页多少点取决于你的边距等,找到与点数最接近的行,并在那里添加分隔符。我现在有个会议,但我稍后会修改我的帖子。您可以自己尝试一下,同时发布结果;)我已经检查了每页的最大行数是75行。数据是基于用户的动态数据。这就是为什么我需要限制每页的最大行数,并检查以前数据的结尾。请参考我问题中的代码。希望你能修改我的代码。我不知道代码有什么问题。@mfo_28-为您的75行修改后代码在前75行可以正常工作,接下来的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