Word VBA Range.Find объект работает некорректно - PullRequest
1 голос
/ 19 октября 2010

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

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

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

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

1 Ответ

0 голосов
/ 25 октября 2010

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

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.

НТН!

...