如何插入分页符以将某些数据范围保持在一起?

时间:2018-07-04 17:50:07

标签: excel excel-vba excel-2016 page-break vba

我正在尝试为公司创建月度报告,但在美观方面遇到了麻烦。我有一些表(包含更多数据)看起来像这样:

enter image description here

文本方式如下(如果图片不可用)

客户1-2018-###-#33

客户2-2017-###-###

---------------- 2018-###-###

客户3- 2018-###-### 等等

,但有时客户数据中间会出现分页符,因此标​​题显示在第一页上,而最后一行显示在新页上。

我正在尝试提出一个代码来检测数据范围是否将被拆分,但是我不能。我以为也许可以用行号预见分页符(这就是我对数据进行分组的方式),但是其中一张纸在行101处有中断(因为此数据从第46行开始),而另一张纸在行上具有分页符106.

我尝试做类似的事情:

If i >= 102 And start.row <= 101 Then
Worksheets(storenumber).HPageBreaks.Add before:=Rows(start.row)
Else
If i >= 176 And start.row <= 166 Then
Worksheets(storenumber).HPageBreaks.Add before:=Rows(start.row)
End If
End If

(随着i =数字和组合的变化),但是我没有取得任何成功。

其他人还有其他想法吗?通常,每张商店编号表只有一个分页符,只有一页除外。 (而且有些工作表不需要分页,因为他们只有5位客户)

我正在寻找更简单的代码(excel初学者/中级),但是我愿意接受任何想法。感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

此代码似乎对我有用:

Option Explicit

Sub BreakPagesCleanly()
Dim pb As HPageBreak
Dim rng As Range
Dim i As Long

ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks
For Each pb In ActiveSheet.HPageBreaks
    If pb.Location.Value = "" Then
        'go back to the last value
        Set rng = pb.Location.End(xlUp)
        ActiveSheet.HPageBreaks.Add before:=rng
        DoEvents 'Seems to be required to give Excel time to catch up
    End If
Next pb

End Sub

以下是之前的视图和之后的视图:

enter image description here enter image description here