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