Как бы здорово это ни выглядело, наблюдая, как ваш макрос VBA манипулирует экраном, вы можете помочь вашему макросу работать быстрее, если отключите (отключите) ScreenUpdating.
Отключить обновление экрана
1. Чтобы отключить ScreenUpdating, в начале кода поместите эту строку:
1 | Application.ScreenUpdating = False |
Включить обновление экрана
2. Чтобы снова включить ScreenUpdating, в конце кода поместите эту строку:
1 | Application.ScreenUpdating = True |
Пример обновления экрана VBA
Тогда ваша процедура будет выглядеть так:
1234567891011 | Sub ScreenUpdating_Example ()Application.ScreenUpdating = False'Сделай что-нибудьДиапазон («a1»). Копировать диапазон («b1»)Диапазон («a2»). Копировать диапазон («b2»)Диапазон («a3»). Копировать диапазон («b3»)Application.ScreenUpdating = TrueКонец подписки |
Обновление экрана Обновить
Отключение ScreenUpdating заставит ваш код VBA работать НАМНОГО быстрее, но это также сделает вашу работу более профессиональной. Конечные пользователи обычно не хотят видеть закулисные действия ваших процедур (особенно, когда процедура выполняется медленно). Кроме того, вы можете не захотеть, чтобы конечные пользователи видели скрытые функции (например, скрытые рабочие листы). Я рекомендую отключить (и снова включить) ScreenUpdating практически во всех ваших процедурах.
Однако бывают случаи, когда вы хотите, чтобы экран обновился. Чтобы обновить экран, вам нужно будет временно снова включить ScreenUpdating (нет команды «обновить» экрана):
123 | Application.ScreenUpdating = True'Сделай что-нибудьApplication.ScreenUpdating = False |
Настройки VBA - код ускорения
Есть несколько других настроек, с которыми можно поиграть, чтобы улучшить скорость вашего кода.
Отключение автоматических вычислений может ОГРОМНО изменить скорость:
1 | Application.Calculation = xlManual |
Отключение строки состояния также имеет небольшое значение:
1 | Application.DisplayStatusBar = False |
Если ваша рабочая книга содержит события, вам обычно следует отключать события в начале процедуры:
1 | Application.EnableEvents = False |
Наконец, ваш код VBA может замедлиться, когда Excel пытается повторно вычислить разрывы страниц (Примечание: не все процедуры будут затронуты). Чтобы отключить отображение разрывов страниц, используйте эту строку кода:
1 | ActiveSheet.DisplayPageBreaks = False |