«ActiveWindow.ScrollIntoView Selection.Range, True» не работает - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно VBA (Word) для прокрутки до определенного места в документе, прежде чем отобразится окно сообщения (msgbox) в макросе.

Я попытался:

  • ActiveWindow.ScrollIntoView Selection.Range, True
  • Я добавил DoEvents перед вызовом Msgbox.Не сработало.
  • Я добавил закладку, а затем выбрал закладку до Msgbox
  • Я добавил засыпатель и другие задержки перед Msgbox.Не сработало.
  • Я пробовал Application.Screenrefresh

Ничего не работает.Msgbox всегда отображается с курсором в том месте, где он находился до запуска макроса.

ОДНАКО, если я переберу код в редакторе VBA, все работает нормально.Только когда я выполняю код «насквозь», он никогда не наблюдает команду ScrollIntoView перед отображением msgbox.

(начало в верхней части документа) (поиск текста, скажем, на странице 3; если найден...)

ActiveWindow.ScrollIntoView Selection.Range, True
DoEvents
Application.ScreenRefresh
Selection.Bookmarks.Add "Prompt"
Selection.Bookmarks("Prompt").Select
DoEvents
Selection.Range.Select
MsgBox "    TASK:  " & PromptIs & String(2, 13) & "    Click OK below and perform the stated task."

Курсор должен быть на найденном тексте, и текст должен быть «на виду», прежде чем отобразится окно сообщения.Это не так.

...