Я работаю над формой пользователя, чтобы найти конкретные фразы и комментировать их в соответствии с определенными критериями.У меня проблемы с добавлением комментариев для всех найденных фраз в документе.Изменяет только первую найденную фразу, хотя выбирает все вхождения фразы.Как я могу изменить этот код для всего содержимого?
Вот мой код:
If Criteria2 <> "" Then
Selection.Find.ClearFormatting
With Selection.Find
.Text = Criteria2
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
On Error Resume Next
With Selection
.Comments.Add Range:=Selection.Range, Text:="SPE 2"
End With
End If
Ok Вот новый код, и он не работает должным образом:
Selection.Find.ClearFormatting
With Selection.Find
.Text = CritArray(i)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do
.Execute
If Not .Found Then
Exit Do
ElseIf .Found Then
FoundCount = FoundCount + 1
Selection.Comments.Add Range:=Selection.Range, Text:=MessArray(i) & CritArray(i) & "' - found for the" & Str(FoundCount) & ". time"
End If
Loop
End With
Что я получаю при использовании этого в качестве ввода:
Testrow1
Testrow2
следующее:
Testrow1 ....................................'Testrow1' - found for the 1. time
Testrow2 ....................................'Testrow2' - found for the 2. time
'Testrow2' - found for the 1. time
Я не могу понять, почему это происходит с тех пор, как ..Цикл должен завершиться, если ничего не найдено.Возможно ли, что .Wrap = wdFindContinue является проблемой?Здесь есть три возможности:
- wdFindAsk ... просит в конце документа снова выполнить поиск в начале (не хочу этого)
- wdFindContinue ... поиск беззапрос
- wdFindStop ... прекращается, когда он впервые находит поисковую фразу (не хочу этого)
Кто-нибудь получил подсказку?