Paul,
Yes that is the way it works. I read an pretty good explanation of how
.Find goes about redefining a search range following each .Execute, but I
can't find it now. Basically, if the found text matches the search range
text "exactly" then Word loses control of the initial defined range,
interprets a successful .find operation and then continues the .find
procedure to IAW the .Wrap setting including the rest of the document.
Here is an example of how you might work around this. Tested on a document
containing this text. One, two, three. One, two, three.
Sub Test()
Dim oRng As Word.Range
Dim oRngDup As Word.Range
Dim oDoc As Document
Set oDoc = ActiveDocument
Set oRng = oDoc.Range
oRng.Start = oDoc.Words(1).Start
oRng.End = oDoc.Words(1).End
Set oRngDup = oRng.Duplicate
With oRng.Find
.Text = oDoc.Words(1).Text
While .Execute
If oRng.End < oRngDup.End Then
oRng.Select
Else
MsgBox "Text not found."
End If
Wend
End With
End Sub

Signature
Greg Maxey/Word MVP
See:
http://gregmaxey.mvps.org/word_tips.htm
For some helpful tips using Word.
> I'm using Find on a range object with a limited range to try and avoid
> searching more of the document than necessary as I'm repeating the
[quoted text clipped - 18 lines]
>
> Paul