Вимкніть (або увімкніть) автоматичні розрахунки - Приклади коду 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 = Неправда

Вимкнення рядка стану також матиме невелику різницю:

1 Application.DisplayStatusBar = Неправда

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

1 Application.EnableEvents = Неправда

Нарешті, ваш код VBA може бути уповільнений, коли Excel намагається повторно обчислити розриви сторінок (Примітка: це не вплине на всі процедури). Щоб вимкнути DisplayPageBreaks, використовуйте цей рядок коду:

1 ActiveSheet.DisplayPageBreaks = Неправда

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave