Объект Word VBA Range.Find работает некорректно

Нашел интересную вещь:

В Word 2010 выделите текст и запустите следующий код VBA:

public Sub Test()
    With Selection.Range.Find
        MsgBox .Execute(Selection.Range.text) 
        MsgBox .Found
    End With
End Sub

В обоих окнах сообщений указано «False», но оба должны быть «True». Почему?


person dxjh    schedule 19.10.2010    source источник


Ответы (1)


Очень интересно!

Word 2007 демонстрирует такое же поведение.

Любопытно, что это происходит не только при поиске в VBA: если вы выберете какой-либо текст в документе и нажмете «найти», диалоговое окно поиска отобразит выбранный текст по умолчанию в качестве цели.
При нажатии «Найти далее» > " Word отображает сообщение об ошибке "Word достиг конца документа... и т. д."

Этого не произойдет, если вы измените текст для поиска, удалив последний символ. VBA согласуется с этим: следующий код работает!

Sub tt()
    With Selection.Range.Find    
       MsgBox .Execute(Mid(Selection.Range.Text,1,Len(Selection.Range.Text)-1))  
       MsgBox .Found  
    End With  
End Sub

Не решено... но оказалось, что оно совместимо с графическим интерфейсом.

ХТХ!

person Dr. belisarius    schedule 25.10.2010
comment
Большое спасибо за Ваш ответ. - person dxjh; 29.10.2010