Код в вопросе вставляет один комментарий для меня, но это все.Это потому что oRng
не сбрасывается.Сравните код в вопросе с приведенным ниже.
В этом коде после успешного выполнения Find.Execute и добавления комментария диапазон свернут до конечной точки ( после найденного термина), затемконец продлен до конца документа.Таким образом, в следующий раз при поиске термина он будет выглядеть только в том, что следует за первым термином.
Также важно при циклическом поиске в Find установить Find.Wrap
в wdFindStop
, чтобы не входить в "бесконечный цикл "(чтобы Find не начинался снова в верхней части документа).
Sub findtrouble()
Dim i As Integer
Dim j As Integer
Dim oRng As Word.Range
Dim MyArray(1, 4) As String
MyArray(0, 0) = "Trouble0"
MyArray(0, 1) = "Trouble1"
MyArray(0, 2) = "Trouble2"
MyArray(0, 3) = "Trouble3"
MyArray(1, 0) = "Comment0"
MyArray(1, 1) = "Comment1"
MyArray(1, 2) = "Comment2"
MyArray(1, 3) = "Comment3"
For j = 0 To 4
Set oRng = ActiveDocument.Content
With oRng.Find
.ClearAllFuzzyOptions
.ClearFormatting
.text = MyArray(0, j)
.wrap = wdFindStop
While .Execute
oRng.Select
ActiveDocument.Comments.Add oRng, MyArray(1, j)
oRng.Collapse wdCollapseEnd
oRng.End = ActiveDocument.content.End
Wend
End With
Debug.Print "Find: " & MyArray(0, j) & " add cmt box w/ "; MyArray(1, j)
Next j
End Sub