I came across an infinite loop problem when I used Find.Execute() in text that contains a hyperlink: the parent Range/Select object, from which the Find object was obtained, stops shifting to the next match.
while (rng.Find.Found)
{
if (rng.Hyperlinks.Count > 0)
test = rng.Start;
if (rng.Text.Trim().Length > 0)
{
// do something
}
rng.Find.Execute();
if (rng.Start == test)
MessageBox.Show("it will be infinite");
}