Отключение (или включение) автоматических вычислений - Примеры кода VBA

Каждый раз, когда вы обновляете значение ячейки, Excel выполняет процесс пересчета книги. При работе непосредственно в Excel вы хотите, чтобы это происходило в 99,9% случаев (за исключением случаев, когда вы работаете с очень большой книгой). Однако это может действительно замедлить ваш код VBA. Рекомендуется устанавливать вычисления вручную в начале макроса и восстанавливать вычисления в конце макроса. Если вам нужно пересчитать книгу, вы можете вручную указать Excel для расчета.

Отключить автоматические вычисления

Вы можете отключить автоматический расчет с помощью макроса, установив для него значение xlmanual. Используйте следующий фрагмент кода VBA:

1 Application.Calculation = xlManual

Снова включите автоматические вычисления

Чтобы снова включить автоматический расчет с настройкой xlAutomatic:

1 Application.Calculation = xlAutomatic

Я рекомендую отключить автоматические вычисления в самом начале процедуры и снова включить автоматические вычисления в конце. Это будет выглядеть так:

Пример макроса "Отключить автоматические вычисления"

12345678 Sub Auto_Calcs_Example ()Application.Calculation = xlManual'Сделай что-нибудьApplication.Calculation = xlAutomaticКонец подписки

Расчет вручную

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

1 Рассчитать

Вы также можете указать Excel, чтобы он пересчитывал только отдельный рабочий лист:

1 Рабочие листы ("лист1"). Рассчитать

Вы также можете указать VBA пересчитать только диапазон (щелкните, чтобы прочитать нашу статью о методах вычисления VBA)

Вот как это может выглядеть внутри макроса:

12345678910111213 Sub Auto_Calcs_Example_Manual_Calc ()Application.Calculation = xlManual'Сделай что-нибудь'RecalcРассчитать'Делай больше вещейApplication.Calculation = xlAutomaticКонец подписки

Настройки 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