Excel vba отключить визуализацию

МЕНЮ САЙТА

  • 1
  • 2
  • 3
  • Главная

    • Информация о сайте

      • О сайте

      • Контакты

      • Карта сайта

      • Книга отзывов

      • Участники

      • Статистика

    • Развите сайта

      • Новости

      • Помочь сайту

    • Друзья

    • FAQ

  • Excel

    • Приемы работы

      • Рабочая область

      • Формулы

      • Сводные таблицы

      • Форматирование

      • Выпадающие списки

      • Примечания

      • Гиперссылки

    • Инструменты и настройки

      • Инструменты

      • Тонкая настройка

    • Импорт данных

    • Интеграция

      • Приложения офиса

  • Готовые решения

    • Excel

      • Формулы

      • Сводные таблицы

      • Диаграммы

      • Полезные приемы

    • VBA

      • Процедуры

      • Пользовательские функции

      • Полезные приемы

  • Форумы

    • Вопросы и решения

      • Вопросы по Excel

      • Вопросы по VBA

      • Готовые решения

      • Excel и другие приложения

    • Работа и общение

      • Неформальное общение

      • Мозговой штурм

      • Работа/Фриланс

    • Работа форума и сайта

      • Вопросы по работе форума и сайта

      • Объявления администрации

  • Библиотека

    • Книги по Excel

      • Функции и формулы

      • Графики и диаграммы

      • Сводные таблицы

      • Excel и VBA

    • Книги по VBA

      • Применение VBA в Excel

      • Программирование на VBA

    • Разное

      • Сборники книг

      • Книги для студентов ВУЗов

      • Специализированные книги

  • Видеосалон

    • Видео к статьям

    • Видеофайлы

  • Справочники

    • Функции листа Excel

    • Функции VBA

  • Разработчик

    • Код

    • Надстройки

    • Элементы управления

    • XLM

    • Программы

КАТЕГОРИИ РАЗДЕЛА

Процедуры
[13]

Пользовательские функции
[9]

Полезные приёмы
[45]

ОПРОСЫ

Какой версией Excel Вы пользуетесь?

Office 365

Excel 2021

Excel 2019

Excel 2016

Excel 2013

Excel 2010

Excel 2007

Excel 2003

Excel 2002

Excel 2000

Excel 1997 или ранее

Mac Excel

[ Результаты · Все опросы ]

Всего ответов: 55669

Главная » Готовые решения » VBA » Полезные приёмы

Отключение обновления экрана для ускорения работы макроса

30.07.2013, 11:54
Sub excample()
Application.ScreenUpdating = False
'Здесь находится Ваш код
Application.ScreenUpdating = True
End Sub 
  • 1
  • 2
  • 3
  • 4
  • 5

Добавил: Serge_007 |

| Теги: отключить обновление экрана, Application.ScreenUpdating, ускорения работы макроса

Просмотров: 32719

| Рейтинг: 4.3/6

Всего комментариев: 0

Добавлять комментарии могут только зарегистрированные пользователи.

[

Регистрация

|

Вход

]

Return to VBA Code Examples

In this Article

  • Disable ScreenUpdating
  • Enable ScreenUpdating
  • VBA ScreenUpdating Example
  • ScreenUpdating Refresh
    • VBA Settings – Speed Up Code
  • VBA Coding Made Easy

As cool as it looks watching your VBA macro manipulate the screen, you can help your Macro run faster if you turn off (disable) ScreenUpdating.

Disable ScreenUpdating

1. To disable ScreenUpdating, At the beginning of your code put this line:

Application.ScreenUpdating = False

Enable ScreenUpdating

2. To re-enable ScreenUpdating, At the end of your code put this line:

Application.ScreenUpdating = True

VBA ScreenUpdating Example

Your procedure will then look like this:

Sub ScreenUpdating_Example()
    Application.ScreenUpdating = False

    'Do Something
    Range("a1").Copy Range("b1")
    Range("a2").Copy Range("b2")
    Range("a3").Copy Range("b3")


    Application.ScreenUpdating = True
End Sub

vba screen updating

ScreenUpdating Refresh

Disabling ScreenUpdating will make your VBA code run MUCH faster, but it will also make your work appear more professional. End-users typically don’t want to see the behind the scenes actions of your procedures (especially when the procedure runs slow). Also, you may not want end-users to see the behind the scenes functionality (ex. Hidden Worksheets). I recommend disabling (and re-enabling) ScreenUpdating in virtually all of your procedures.

However, there are some times when you want the screen to refresh. To refresh the screen, you will need to temporarily turn back on ScreenUpdating (there is no screen “refresh” command):

    Application.ScreenUpdating = True
    'Do Something
    Application.ScreenUpdating = False

VBA Settings – Speed Up Code

There are several other settings to play with to improve your code speed.

Disabling Automatic Calculations can make a HUGE difference in speed:

Application.Calculation = xlManual

Disabling the Status Bar will also make a small difference:

Application.DisplayStatusBar = False

If your workbook contains events you should usually disable events at the beginning of your procedure:

Application.EnableEvents = False

Last, your VBA code can be slowed down when Excel tries to re-calculate page breaks (Note: not all procedures will be impacted).  To disable displaying page breaks use this line of code:

ActiveSheet.DisplayPageBreaks = False

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro – A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

VBA Turn Off On ScreenUpdating

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

 

Александр Меркулов

Пользователь

Сообщений: 45
Регистрация: 01.09.2016

#1

19.05.2017 14:09:01

Здравсвуйте, помню натыкался на тему, в которой говорили про возможность ускорить работу макросов путём отключения отображения каждого процесса. Т.е. необходимо сделать так, что бы после нажатия на кнопку были пауза(визуально), после которой выводился уже готовый результат, а не моргание строчек.

Небольшая процедурка, которая умеет вкл/выкл визуализацию работы макроса.
Очень помогает сократить время отработки макроса на больших объемах данных.

Код


Sub Vis(flag As Boolean)
    With Application
        .Calculation = IIf(flag, xlCalculationAutomatic, xlCalculationManual)
        .ScreenUpdating = flag
        .EnableEvents = flag
        .DisplayStatusBar = flag
        .DisplayAlerts = flag
    End With
End Sub

Пример вызова


Call Vis(False)
Call Vis(True)

Ну и кусок кода для вывода информационного сообщения в статус бар.

Код


Application.StatusBar = «Текст сообщения»
DoEvents

Содержание

  • Отключить обновление экрана
  • Включить обновление экрана
  • Пример обновления экрана VBA
  • Обновление экрана Обновить

Как бы здорово это ни выглядело, наблюдая, как ваш макрос VBA манипулирует экраном, вы можете помочь вашему макросу работать быстрее, если отключите (отключите) ScreenUpdating.

Отключить обновление экрана

1. Чтобы отключить ScreenUpdating, в начале кода поместите эту строку:

1 Application.ScreenUpdating = False

Включить обновление экрана

2. Чтобы снова включить ScreenUpdating, в конце кода поместите эту строку:

1 Application.ScreenUpdating = True

Тогда ваша процедура будет выглядеть так:

1234567891011 Sub ScreenUpdating_Example ()Application.ScreenUpdating = False’Сделай что-нибудьДиапазон («a1»). Копировать диапазон («b1»)Диапазон («a2»). Копировать диапазон («b2»)Диапазон («a3»). Копировать диапазон («b3»)Application.ScreenUpdating = TrueКонец подписки

Обновление экрана Обновить

Отключение ScreenUpdating заставит ваш код VBA работать НАМНОГО быстрее, но это также сделает вашу работу более профессиональной. Конечные пользователи обычно не хотят видеть закулисные действия ваших процедур (особенно, когда процедура выполняется медленно). Кроме того, вы можете не захотеть, чтобы конечные пользователи видели скрытые функции (например, скрытые рабочие листы). Я рекомендую отключить (и снова включить) ScreenUpdating практически во всех ваших процедурах.

Однако бывают случаи, когда вы хотите, чтобы экран обновился. Чтобы обновить экран, вам нужно будет временно снова включить ScreenUpdating (нет команды «обновить» экрана):

123 Application.ScreenUpdating = True’Сделай что-нибудьApplication.ScreenUpdating = False

Настройки VBA — код ускорения

Есть несколько других настроек, с которыми можно поиграть, чтобы улучшить скорость вашего кода.

Отключение автоматических вычислений может ОГРОМНО изменить скорость:

1 Application.Calculation = xlManual

Отключение строки состояния также имеет небольшое значение:

1 Application.DisplayStatusBar = False

Если ваша рабочая книга содержит события, вам обычно следует отключать события в начале процедуры:

1 Application.EnableEvents = False

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

1 ActiveSheet.DisplayPageBreaks = False

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

Понравилась статья? Поделить с друзьями:
  • Excel vba остаток при делении
  • Excel vba определить что это число
  • Excel vba определить тип ячейки
  • Excel vba нумерация ячеек
  • Excel vba нулевой значение