我正在尝试在文档的某些位置突出显示一个字符串

时间:2019-05-03 18:55:10

标签: vba ms-word

我想使用宏在文档中的某些位置突出显示我客户的名字。在某些地方应突出显示名称,而在某些地方则应不突出显示。

我尝试将wdNoHighlight代码移到其他位置,但没有任何运气;无论我将其放在何处,都会得到相同的结果:名称后的整个段落都突出显示。

'''

ClientName = "Barry Allen"
Call HighlightName(ClientName)
Selection.TypeText Text:="Some more text after the client's name, which I don't want to be highlighted"
Selection.TypeParagraph
Selection.TypeText Text:="This text will not be highlighted"

Sub HighlightName(NametoHighlight)
    Selection.MoveLeft Unit:=wdCharacter, Count:=Len(NametoHighlight), 
Extend:=wdExtend
    Options.DefaultHighlightColorIndex = wdYellow
    Selection.Range.HighlightColorIndex = wdYellow
    Selection.EndKey Unit:=wdStory
    Options.DefaultHighlightColorIndex = wdNoHighlight
    Selection.Range.HighlightColorIndex = wdNoHighlight
End Sub

'''

当名称位于其自己的段落中时,我的代码有效,但是当名称是段落的一部分时,该名称之后的整个段落都被突出显示,但我只希望该名称突出显示。

2 个答案:

答案 0 :(得分:0)

我找到了使之工作的方法。您插入一个段落,然后退格以删除多余的段落。不是最优雅的解决方案,但是它可以满足我的需要。我添加到HighlightName子底部的代码是:

    Selection.TypeParagraph
    Selection.TypeBackspace

如果有人有更优雅的解决方案,请告诉我!

答案 1 :(得分:0)

例如:

Sub Demo()
Options.DefaultHighlightColorIndex = wdYellow
Const ClientName As String = "Barry Allen"
With Selection
  .Text = "Some text before the client's name" & ClientName & " some more text after the client's name" & vbCr & "Next paragraph"
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = ClientName
    .Replacement.Text = "^&"
    .Replacement.Highlight = True
    .Format = True
    .MatchWildcards = True
    .Wrap = wdFindStop
    .Execute Replace:=wdReplaceAll
  End With
End With
End Sub