我想使用宏在文档中的某些位置突出显示我客户的名字。在某些地方应突出显示名称,而在某些地方则应不突出显示。
我尝试将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
'''
当名称位于其自己的段落中时,我的代码有效,但是当名称是段落的一部分时,该名称之后的整个段落都被突出显示,但我只希望该名称突出显示。
答案 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