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

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

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

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

В обоих сообщениях указано "False", но оба должны быть "True". Зачем?

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

Не решено... но оказалось совместимым с GUI.

НТН!

Другие вопросы по тегам