Как показать экран ожидания в VBA Excel 2010 - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть макросы, которые выполняются в некоторых книгах, и экран состояния, который показывает их прогресс, поэтому пользователю не нужно смотреть на пустой экран или экран загрузки Excel.Или так, хотя я.Страница состояния работает, она будет обновляться по мере запуска макросов, но Excel не будет отображать ее до тех пор, пока макросы не закончат работу.Как мне показать мой экран статуса?

status = "SheetName"

Private Sub Workbook_Open()
    'Make sure that the screen is active
    Sheets(status).Activate
    Sheets(status).Select
End Sub

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011

Если целью вашего экрана состояния является просто дать некоторую обратную связь во время работы ваших макросов, быстрой и простой альтернативой является использование строки состояния. Вот образец:

Sub YourMacro()
    Dim StatusOld As Boolean, CalcOld As XlCalculation

    ' Capture Initial Settings
    StatusOld = Application.DisplayStatusBar

    '      Doing these will speed up your code
    CalcOld = Application.Calculation
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    Application.EnableEvents = False

    On Error GoTo EH

    ' Your code...

    ' Every so often while your code is running
    Application.StatusBar = "Something Useful..." 

    ' After all your code is done
CleanUp:
    ' Put things back like they were
    Application.StatusBar = False
    Application.Calculation = CalcOld
    Application.DisplayStatusBar = StatusOld
    Application.ScreenUpdating = True
    Application.EnableEvents = True
Exit Sub
EH:

    ' Your error handler...

    GoTo CleanUp
End Sub
0 голосов
/ 09 февраля 2011

Вы должны вызывать DoEvents после каждого обновления (инструкция VBA).Это на мгновение вернет процессорное время в Excel и будет использовать его для перерисовки экрана.Вы должны быть немного осторожны с этим, так как это также позволит вашему пользователю нажимать на электронную таблицу и вносить ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...