首页 > 解决方案 > 如何每次都在分页符下插入功能区?

问题描述

这样做的目的是为我们的每周计划打印一个 PDF 页面。C 列有每个工作的开始日期,我需要一个占据整行的功能区来记录日程表中一周中的每一天。我有一个Do While Loop检查 C 列并为每个新日期添加功能区的功能,但由于有多个页面,我还需要功能区在每个分页符下显示。

我遇到的问题是功能区并不总是插入在分页符下方,而是有时在它上方。我发现一个 With Loop 每次都能正确处理分页符,但我不知道如何让它与我的Do While Loop. 基本上,每当星期几发生变化时,我只能在我们的分页符下添加星期丝带。

Sub forEachDayOfWeek()

    Range("A4").Formula = "=TEXT(C5,""dddd"")"
    Range("E6").Select

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual


Do While ActiveCell.Offset(-1, 0) <> "" And ActiveCell.Offset(0, -1) <> ""
   If ActiveCell.Value = 1 Then
        ActiveCell.Offset(2, 0).Select
   ElseIf ActiveCell.EntireRow.PageBreak <> xlPageBreakNone Then
      Rows("4:4").Copy
      Selection.EntireRow.Insert Shift:=xlDown
      ActiveCell.Offset(2, 0).Select
    ElseIf ActiveCell.Value = ActiveCell.Offset(-1, -2) Then
        ActiveCell.Offset(1, 0).Select
    ElseIf ActiveCell.Value = ActiveCell.Offset(-1, 0) Then
        ActiveCell.Offset(1, 0).Select
    ElseIf ActiveCell.Value > ActiveCell(-1, 0) Then
        Rows("4:4").Copy
        Selection.EntireRow.Insert Shift:=xlDown
        ActiveCell.Offset(2, 0).Select
    End If
Loop

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub


Sub forEachPageBreak()

Dim ws As Worksheet
Dim PgBreak As HPageBreak

Set ws = ActiveSheet

With ws
    If .HPageBreaks.Count > 0 Then
        For Each PgBreak In .HPageBreaks
            Rows("4:4").Copy
            PgBreak.Location.Insert
        Next
    Else
        MsgBox "No data in sheets"
    End If
End With

End Sub

在图片中,我已经编辑了一些信息,但你可以看到我在说什么的列表。星期二在分页符之上。这是结果的图像在此处输入图像描述

标签: excelvba

解决方案


推荐阅读