【问题标题】:How to highlight selected text if not repeated?如果不重复,如何突出显示选定的文本?
【发布时间】:2021-01-08 23:44:50
【问题描述】:

我正在使用 VBA 脚本(感谢 @MacroPod)在文档中查找所选文本的重复项,并将它们设置为粗体和红色。

我想更新此脚本以查看文本中引用的某些来源是否未在末尾引用。如果该单词不重复,是否有任何方法可以更改所选文本的格式(例如使其变为粉红色)?

Sub MakeBold()
Application.ScreenUpdating = False
With ActiveDocument.Range
    With .Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Replacement.Font.Bold = True
        .Replacement.Font.ColorIndex = wdRed
        .Text = Selection.Text
        .Replacement.Text = "^&"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .Execute Replace:=wdReplaceAll
    End With
End With
Application.ScreenUpdating = True
End Sub

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    如果您使用 Word 的引用工具,那将不是问题。也就是说,尝试:

    Sub Demo()
    Application.ScreenUpdating = False
    Dim i As Long
    With ActiveDocument.Range
      With .Find
        .ClearFormatting
        .Text = Selection.Text
        .Forward = True
        .Wrap = wdFindStop
        .Execute
      End With
      Do While .Find.Found
        i = i + 1
        .Collapse wdCollapseEnd
        .Find.Execute
      Loop
      With .Find
        .Replacement.Text = "^&"
        .Replacement.ClearFormatting
        .Replacement.Font.Bold = True
        If i = 1 Then
          .Replacement.Font.ColorIndex = wdPink
        Else
          .Replacement.Font.ColorIndex = wdRed
        End If
        .Wrap = wdFindContinue
        .Format = True
        .Execute Replace:=wdReplaceAll
      End With
    End With
    Application.ScreenUpdating = True
    MsgBox i & " instances found."
    End Sub
    

    【讨论】:

    • 这就像一个魅力!谢谢你,MacroPod!你一直非常足智多谋和乐于助人!不幸的是,人们不使用 MS References。所以,这段代码对我有很大帮助!赞一个!
    猜你喜欢
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    相关资源
    最近更新 更多