Ребята, всем привет! 👋
Продолжаем изучать VBA. В этом уроке я расскажу как ускорить ваш код VBA.
✍️ Если вы только начинаете осваивать VBA мы уверены, каждый может найти для себя что-то новое!
✨ А прежде, чем мы начнем 📣 напомню, теперь у нас на канале есть удобный рубрикатор 👉 Быстрый поиск решения. Путеводитель по Excel, а все видео 📽 предыдущих уроков доступны и на YouTube.
Если в вашем коде есть процедура, выполнение которой занимает много времени – она может постоянно возвращаться к листу или выполнять вычисления, которые, по-видимому, переводят ваш курсор в состояние вечных песочных часов.
Рассмотрим два основных параметра, которые мы можем добавить в наш код для ускорения кода, оба из которых являются частью рекомендаций VBA при написании кода.
⏩ Отключить обновление экрана
По умолчанию Excel будет отображать изменения в рабочих книгах в режиме реального времени по мере выполнения кода VBA. Это означает, что экран будет обновляться по мере выполнения макроса. Это может значительно замедлить работу вашего кода, особенно если выполняется длительная процедура.
Чтобы предотвратить это, отключите обновление экрана. Добавьте эту строку кода в начало процедуры:
🔘 Application.ScreenUpdating = False
В конце макроса вам следует вернуться к обновлению экрана:
🔘 Application.ScreenUpdating = True
Ваш макрос должен выглядеть следующим образом:
⏩ Отключите автоматическое вычисление
По мере выполнения вашего макроса и изменения значений ячеек Excel пересчитывает все ячейки, зависящие от ячейки, значение которой изменилось. Кроме того, всякий раз, когда формула изменяется, вычисления выполняются снова. Это может значительно снизить скорость вашего макроса.
Чтобы отключить автоматическое вычисление, добавьте эту строку кода в начало макроса.
🔘 Application.Calculation = xlManual
Чтобы переключить их обратно на автоматический режим, убедитесь, что вы поместили эту строку кода в нижней части вашего макроса.
🔘 Application.Calculation = xlAutomatic
Ваш макрос должен выглядеть следующим образом:
⚠️ ЧТО СЛЕДУЕТ ПОМНИТЬ
Excel по умолчанию для параметра Обновление экрана установлено значение TRUE, а для вычислений - значение Automatic. Использование кода для отключения этих настроек в приложении значительно ускорит ваш код.
НО!!! если мы забудем снова включить эти настройки или если код перестанет выполняться до того, как дойдет до строк кода, которые сбрасывают эти настройки, вы можете в конечном итоге не отвечать на экран Excel (поскольку экран не будет обновляться) или вычисления, которые не будут вычисляться, если вы не сделаете это вручную.
Чтобы решить эту проблему, всегда убедитесь, что в вашем коде есть ловушка ошибок, чтобы в случае возникновения ошибки остановить макрос, убедитесь, что макрос переходит к строкам кода, которые сбрасывают эти настройки.
В приведенном выше примере мы создали обработчик ошибок с именем EH.
Если что-то пойдет не так в коде, макрос перейдет к EH и запустит последние 2 строки кода. Поскольку мы НЕ поместили вспомогательный параметр Exit в макрос над обработчиком ошибок, если макрос работает идеально, он перейдет к 2 строкам кода и вернет эти настройки к значениям по умолчанию.
А на этом сегодня все. 👏 Продолжение следует...
Подписывайтесь на канал, чтобы не пропустить новые уроки и полезные фишки Excel. Следите за нашими новостями и вы узнаете больше о VBA и Excel в частности.
📝 Нам очень важна Ваша обратная связь. Отзыв по уроку и любые вопросы пишите в комментариях.
💝 А если у Вас пока нет вопросов, но вы дочитали данную статью до конца оставьте в комментариях просто смайлик 😉 (автору будет приятно)
И конечно же, за лайк 👍 и репост 🔁 данного поста благодарочка 💖 и респект 🤝 каждому!