Хорошо, после некоторого тестирования я запустил его, но это немного странно. Кажется, это проблема синхронизации.
Это работает:
Использование DoEvents
два раза всегда работает в моих тестах.
Только одного DoEvents
недостаточно.
Информация из документации Microsoft о DoEvents
:
Обеспечивает выполнение, чтобы операционная система могла обрабатывать другие события.
Private Sub Document_Open()
DoEvents: DoEvents
Application.WindowState = wdWindowStateMinimize
End Sub
Это тоже не работает:
Итак, я подумал о добавлении задержки, используя процедуру API Sleep
и вызвал это и DoEvents
в цикле. Но это не сработало.
Private Declare PtrSafe Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As LongPtr)
Private Sub Document_Open()
Dim index As Integer
For index = 1 To 5
DoEvents
Sleep 50
Next index
Application.WindowState = wdWindowStateMinimize
End Sub