Лог c кода в вопросе неисправен. Find
должен на самом деле найти поисковый запрос, прежде чем код сможет проверить, будет ли он жирным или не жирным.
Возможны два базовых c подхода
- Поиск термина, когда найден, выполнить тест и применить стиль
- Искать каждый термин дважды, один раз для полужирный и один раз не полужирный
Вам нужно было бы протестировать, но, исходя из опыта, я считаю, что второй подход будет более быстрым, поскольку он может использовать ReplaceAll
.
Код ниже демонстрирует принцип, основанный на коде в вопросе. Обратите внимание, что он использует объект Range
, а не Selection
, поскольку это обычно более эффективно.
Sub FindReplaceFormattingVariations()
Dim rng As Word.Range
Dim searchTerm As String
Dim Arr(1 to 200)
Arr(1) = "Word1"
Arr(2) = "Word2"
.
.
.
Arr(200) = "Word200"
For i = 1 To Ubound(Arr)
searchTerm = Arr(i)
Set rng = ActiveDocument.content
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = searchTerm
.Font.Bold = True
.Replacement.Style = ActiveDocument.Styles("StyleA")
.Execute Replace:=wdReplaceAll
End With
With rng.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = searchTerm
.Font.Bold = False
.Replacement.Style = ActiveDocument.Styles("StyleB")
.Execute Replace:=wdReplaceAll
End With
Next
End Sub