Я пытаюсь выделить строку в некоторых местах моего документа - PullRequest
1 голос
/ 03 мая 2019

Я хочу выделить имя моего клиента в некоторых местах документа с помощью макроса. В некоторых местах имя должно быть выделено, а в некоторых - нет.

Я безуспешно пытался перемещаться по коду 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 голосов
/ 04 мая 2019

Например:

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
0 голосов
/ 04 мая 2019

Я нашел способ заставить его работать.Вы вставляете абзац и затем возвращаете, чтобы избавиться от лишнего абзаца.Не самое элегантное решение, но оно делает то, что мне нужно.Код, который я добавил к нижней части HighlightName Sub, был:

    Selection.TypeParagraph
    Selection.TypeBackspace

Если у кого-то есть более элегантное решение, пожалуйста, дайте мне знать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...