测试"硬"分页符

时间:2018-01-26 07:15:11

标签: vba ms-word

如何测试插入点是否位于手动分页符创建的新页面的开头?看起来它应该像检查前面的字符是否为CHR(12)一样简单,但这似乎不起作用。

If Selection.Type = CHR(12) Then
  Selection.TypeText Text:="HARD PAGE"
Else
  Selection.TypeText Text:="NO HARD PAGE"
End If 

这只是一个语法错误,还是我的错误方法?

2 个答案:

答案 0 :(得分:1)

您必须向后移动选择(或范围)。 Selection.Text(或Range.Text)始终返回跟随 IP的字符。当然,您可能不想实际移动选择。这意味着您可以使用Range对象进行测试。

由于你必须向后移动,无论如何,为了测试是否存在硬分页,我将它放在一个循环中,以便选择可以在页面的任何位置开始。

另外,我已经添加了一个检查宏是否已在第一页上启动的问题,因为否则您将进入无限循环,从Selection向后移动到下一页。

Sub CheckWhetherHardPageBreak()
    Dim rngToCheck As word.Range
    Dim pgNr As Long
    Dim pgNrChange As Long

    Set rngToCheck = Selection.Range
    pgNr = rngToCheck.Information(wdActiveEndPageNumber)
    If pgNr = 1 Then
        MsgBox "Can't start on Page 1"
        Exit Sub
    End If

    pgNrChange = pgNr
    Do While pgNrChange = pgNr
      rngToCheck.MoveEnd wdCharacter, -1
      pgNrChange = rngToCheck.Information(wdActiveEndPageNumber)
    Loop
    'Extend the selection to include the following character
    'So that ASC() works
    rngToCheck.MoveEnd wdCharacter, 1
    If Asc(rngToCheck.Text) <> 12 Then
        'Move it back before the previous character
        'as the character immediately following a hard page break is Chr(13)
        rngToCheck.MoveEnd wdCharacter, -2
    End If
    rngToCheck.MoveEnd wdCharacter, 1

    If Asc(rngToCheck) = 12 Then
      Selection.TypeText Text:="HARD PAGE"
    Else
      Selection.TypeText Text:="NO HARD PAGE"
    End If
End Sub

答案 1 :(得分:-1)

我认为您可能打算使用 Chr(13) Chr(10)

此处提供更多信息: