Изключете (или включете) автоматичните изчисления - Примери за код на VBA

Всеки път, когато актуализирате стойност на клетка, Excel преминава през процес за преизчисляване на работната книга. Когато работите директно в Excel, искате това да се случва 99,9% от времето (изключението е, ако работите с изключително голяма работна книга). Това обаче може наистина да забави вашия VBA код. Добра практика е да настроите изчисленията си на ръчни в началото на макросите и да възстановите изчисленията в края на макросите. Ако трябва да преизчислите работната книга, можете ръчно да кажете на Excel да изчисли.

Изключете автоматичните изчисления

Можете да изключите автоматичното изчисление с макрос, като го зададете на xlmanual. Използвайте следния код на VBA:

1 Application.Calculation = xlManual

Включете отново автоматичните изчисления

За да включите отново автоматичното изчисление с настройката xlAutomatic:

1 Приложение.Изчисляване = xlАвтоматично

Препоръчвам да деактивирате автоматичните изчисления в самото начало на вашата процедура и да активирате отново автоматичните изчисления в края. Ще изглежда така:

Деактивиране на пример за макрос за автоматични изчисления

12345678 Sub Auto_Calcs_Example ()Application.Calculation = xlManual'Направи нещоПриложение.Изчисляване = xlАвтоматичноEnd Sub

Ръчно изчисление

Когато автоматичните изчисления са деактивирани, можете да използвате Изчисли команда за принуждаване на Excel да преизчисли:

1 Изчисли

Можете също така да кажете на Excel да преизчисли само отделен работен лист:

1 Работни листове ("лист1"). Изчислете

Можете също така да кажете на VBA да преизчисли само диапазон (кликнете, за да прочетете нашата статия за методите за изчисляване на VBA)

Ето как това може да изглежда в макроса:

12345678910111213 Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Направи нещо- ПреизчислиИзчисли„Правете повече нещаПриложение.Изчисляване = xlАвтоматичноEnd Sub

Настройки на VBA - Код за ускоряване

Ако целта ви е да ускорите кода си, трябва да помислите и за коригиране на тези други настройки:

Деактивирането на актуализацията на екрана може да направи огромна разлика в скоростта:

1 Application.ScreenUpdating = False

Изключването на лентата на състоянието също ще има малка разлика:

1 Application.DisplayStatusBar = False

Ако вашата работна книга съдържа събития, трябва също да деактивирате събития в началото на вашите процедури (за да ускорите кода и да предотвратите безкрайни цикли!):

1 Application.EnableEvents = False

И накрая, вашият VBA код може да бъде забавен, когато Excel се опитва да преизчисли прекъсванията на страниците (Забележка: не всички процедури ще бъдат засегнати). За да изключите DisplayPageBreaks, използвайте този ред код:

1 ActiveSheet.DisplayPageBreaks = False

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave