如何在 Excel VBA 中的分页符后有条件地插入行?

How can I Conditionally Insert Rows after Page Breaks in Excel VBA?

我目前正在尝试编写一个宏,在适当的时候在每个新页面的顶部插入一个 "Title continued" 和一个 "Subtitle continued" 行。为此,我想遍历每一行并确定:

  1. 该行是否是不是标题或副标题的分页符(如果是,则插入一行"Title continued"和另一行"Subtitle continued"),
  2. 该行是否分页且已经是副标题(如果是,只插入"Title continued"),
  3. 该行是否已经是标题或不是分页符(如果是,跳过),

目前,除了字幕和标题本身之外的每一行,字幕和标题分别存储在 C 列和 D 列中。对于标题和副标题行,C 列和 D 列是空白的。我遇到的问题是,在第一次插入发生后,我的移动变得很奇怪。大多数行插入宏向后移动,但这在这里不起作用,因为分页符会在分页前插入行后发生变化。这是我写的代码:

Inserts = 0
Dim Counter As Long
Counter = 1
While Counter < RowCount
    If Rows(Counter).PageBreak <> -4142 And Cells(Counter, "C").Value <> "" Then
        Range("C" & (Counter), "C" & (Counter + 1)).EntireRow.Insert
        Cells(Counter, "A").Value = UCase(Cells(Counter + 2, "D").Value) & " continued"

        Cells(Counter + 1, "A").Value = UCase(Cells(Counter + 2, "C").Value) & " continued"

        Counter = Counter + 3
        Inserts = Inserts + 2
    ElseIf Rows(Counter).PageBreak <> -4142 And Cells(Counter + 1, "C").Value <> "" Then
        Range("C" & Counter).EntireRow.Insert
            Cells(Counter, "A").Value = UCase(Cells(Counter + 2, "D").Value) & " continued"

        Counter = Counter + 2
        Inserts = Inserts + 1
    Else: Counter = Counter + 1
    End If
Wend
RowCount = RowCount + Inserts - 2

谢谢!

安迪

更新:此代码确实按预期工作。问题是电子表格中的其他列正在影响分页符,即使它们超出了打印范围。我删除了这段代码中的那些列是 运行,所以分页符后来移动了,给人的印象是这部分不起作用。将所有自动分页符设置为 xlPageBreakManual 解决了这个问题,而没有强迫我提前删除列(因为我需要它们的数据)。