У меня есть следующий код в Word:
Function findRanges(keyword) As Variant()
Dim foundRanges(), rngSearch As Range
Dim i, foundCount As Integer
i = 0
foundCount = 0
Set rngSearch = ActiveDocument.Range
With rngSearch.Find
Do While .Execute(FindText:=keyword, MatchWholeWord:=True, Forward:=True) = True
foundCount = foundCount + 1
rngSearch.Collapse Direction:=wdCollapseEnd
Loop
End With
ReDim foundRanges(0 To foundCount - 1)
Set rngSearch = ActiveDocument.Range
With rngSearch.Find
Do While .Execute(FindText:=keyword, MatchWholeWord:=True, Forward:=True) = True
Set foundRanges(i) = rngSearch
MsgBox "rngSearch / " & rngSearch.End
MsgBox "foundRanges / " & foundRanges(i).End
i = i + 1
rngSearch.Collapse Direction:=wdCollapseEnd
Loop
End With
For j = LBound(foundRanges) To UBound(foundRanges)
MsgBox j & "foundRanges / " & foundRanges(j).End
Next j
findRanges = foundRanges
End Function
Когда я использую эту функцию, диапазоны, хранящиеся в массиве "foundRanges", различаются (я проверяю их по конечной позиции).НО, как только мой цикл поиска заканчивается, диапазоны становятся одинаковыми (они имеют одинаковую конечную позицию), и я не могу понять, почему.
Я хочу сохранить местоположения каждого найденного ключевого слова вмассив и изменить ключевые слова позже для пользовательского ввода.