【问题标题】:Use Word Macro to Determine last character of Paragraph使用 Word 宏确定段落的最后一个字符
【发布时间】:2017-11-14 17:33:19
【问题描述】:

我一直在使用此代码在我的 word doc 中的所有标题加粗下划线:

Sub Underline_Headers()
Dim p As Paragraph
For Each p In ActiveDocument.Paragraphs
    If Len(p.Range.Text) < 70 Then
        p.Range.Font.Underline = True
        p.Range.Font.Bold = True
    End If
Next p
End Sub

这很有效 - 只要每个标题的长度少于 70 个字符,并且它下面的段落是 70 个或更多字符。

但是很多时候表头可以超过70个字符,而表头下的段落可以少于70个字符。

但是,标题永远不会以任何标点符号结尾,例如“.”。但它们下面的段落总是这样。

我正在尝试修复上面的代码以查找所有不以“。”结尾的段落。然后加粗下划线。也就是说,我想改变规则。

我尝试了唯一对我有意义的事情。代码没有中断,但它最终在整个文档中加了粗体:

Sub Underline_Headers()
Dim p As Paragraph
For Each p In ActiveDocument.Paragraphs
    If Right(p.Range.Text,1) <> "." Then
        p.Range.Font.Underline = True
        p.Range.Font.Bold = True
    End If
Next p
End Sub

这应该会查找最后一个字符不是“.”的所有段落,如果这样做,它将隔离所有标题并仅在它们下加粗下划线,但显然这不起作用。

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    每个段落的最后一个字符是回车,Chr(13)。文本在此之前结束一个字符。下面的代码还考虑了有人以一个或多个空格结束段落文本的可能性。它采用“清理过的”字符串并在可能的异常字符串中查找最后一个字符,例如.?!。您可以将此字符串缩减为一个句号,或将其扩展为包含更多异常的 cnadidates。

    Private Sub UnderlineTitles()
    
        Dim Para As Paragraph
        Dim Txt As String
    
        Application.ScreenUpdating = False
        For Each Para In ActiveDocument.Paragraphs
            Txt = Para.Range.Text
            Txt = RTrim(Left(Txt, Len(Txt) - 1))
            ' you can extend the list to include characters like ")]}"
            If InStr(".?!", Right(Txt, 1)) = 0 Then
                ' to choose a different style of underline, remove
                ' "= wdUnderlineSingle", type "=" and select from the dropdown
                Para.Range.Font.Underline = wdUnderlineSingle
            End If
        Next Para
        Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

    • 不错。谢谢!在您的 cmets 之后,我还尝试了 'If Left(Right(p.Range.Text, 2), 1) "。" Then' 效果也很好,但你的更好,因为它可以在字符串的末尾包含不同的可能字符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    相关资源
    最近更新 更多