Как мне установить фокус через Word vba range.find - PullRequest
0 голосов
/ 22 мая 2018

Я пишу макрос в Word для замены некоторого текста отображенным определением.

Я хочу дать пользователю возможность давать подтверждение для каждой замены, так же как и поиск по умолчанию и замена.

Как настроить фокусировку на найденном тексте?Как можно прокрутить конкретный раздел?

Мне нужно использовать пользовательский код VBA (вместо поиска и замены по умолчанию), поскольку мне нужно обрабатывать документ после прочтения в сопоставлениях.

Я уже могу заменить текст, а также показывать предупреждения пользователю.Тем не менее, я хочу сделать акцент на текст при отображении предупреждения.

Текущий код:

Do While myRange.Find.Execute( _
            FindText:=dict.Items()(i) & " (" & Word & ")", _
            MatchCase:=False, _
            MatchWholeWord:=True _
            )                    
    myRange.Select                        
    If MsgBox("Replace '" & myRange.Find.Text & "' with '" & Word & "'?", vbYesNo) = vbYes Then
        myRange.Text = Word
    End If

    myRange.Start = myRange.Start + Len(myRange.Find.Text)
    myRange.End = cached
Loop

ps У меня есть открытая форма / диалог, из которого выполняется макросбежать;поэтому текст находится за диалогом.

РЕДАКТИРОВАТЬ: Основываясь на ответе Джея, я снова проверил поведение диалогового окна «Найти и заменить».Диалог перемещается в зависимости от расположения текста.Могу ли я добиться того же, когда у меня есть форма и диалоговое окно подтверждения над текстом?

1 Ответ

0 голосов
/ 25 мая 2018

Оператор myRange.Select, который уже есть в вашем коде, помещает Selection в найденный текст и прокручивает его, если он находится за кадром.Однако это не поможет, если выделение скрыто за пользовательской формой (пользовательской формой?) Или окном сообщения.Вы можете переместить форму в сторону, если сможете выяснить, где находится Выбор по отношению к координатам экрана.

...