Функция Excel VBA DoEvents

Когда мы пишем огромные коды, мы всегда попадаем в ловушку VBA. Когда код большой, VBA тратит свое время на завершение запуска и выполнения процесса. Что может занять время от минуты до нескольких минут. Это период времени, когда все раздражаются. И мы не можем больше ничего делать в этот период времени. Но чтобы избежать этого, у нас в VBA есть функция DoEvents. С помощью DoEvents мы можем запускать код в фоновом режиме, и одновременно мы можем делать и другие вещи. Мы можем не только работать с другим инструментом или программным обеспечением, но также можем прерывать код или останавливаться между процессами исполнения.

Как только мы введем DoEvents в коде, кроме VBA, мы также получим контроль над работой, которую мы хотим сделать. Хорошая вещь о DoEvents - у него нет никакого синтаксиса для записи. Мы можем напрямую разместить Doevents там, где мы хотим взять под контроль VBA и выполнять задачи в соответствии с нашими потребностями.

Как использовать функцию DoEvents в Excel VBA?

Ниже приведены различные примеры использования функции DoEvents в Excel с использованием кода VBA.

Вы можете скачать этот шаблон VBA DoEvents Excel здесь - Шаблон VBA DoEvents Excel

Excel VBA DoEvents - Пример № 1

Хотя для выполнения DoEvents нам нужен огромный набор данных, где мы можем видеть, как код прерывается. Итак, мы будем использовать цикл, в котором числа будут применяться до тех пор, пока код не будет завершен. Для этого выполните следующие шаги:

Шаг 1: Откройте модуль в VBA из вкладки меню Вставка, как показано ниже.

Шаг 2: Напишите подпроцедуру VBA DoEvents, или мы можем выбрать любое имя, чтобы определить код в соответствии с нашими потребностями.

Код:

 Sub VBA_DoEvents () End Sub 

Шаг 3: Теперь определите переменную в любом имени с типами данных Long. Цель рассматривать тип данных как Long, потому что мы будем брать любую длину данных, которую мы хотим, что невозможно, если мы рассмотрим Integer.

Код:

 Sub VBA_DoEvents () Dim A As Long End Sub 

Шаг 4: Теперь откройте цикл For-Next, в который мы поместим условия.

Код:

 Sub VBA_DoEvents () Dim A As Long для следующего A End Sub 

Шаг 5: Рассмотрите диапазон числа по вашему выбору, который может быть замечен при реализации. Здесь мы берем диапазон от 1 до 2000 в определенной переменной A.

Код:

 Sub VBA_DoEvents () Dim A As Long для A = 1 до 20000 Next A End Sub 

Шаг 6: Как только мы определим диапазон чисел, мы выберем диапазон ячеек, где мы увидим изменения в числах, которые мы выбрали выше. Допустим, диапазон ячеек от А1 до А5. Это может быть и отдельная клетка.

Код:

 Sub VBA_DoEvents () Dim A As Long для диапазона A = от 1 до 20000 («A1: A5»). Значение = A Next A End Sub 

Шаг 7: Теперь запустите код, нажав кнопку Play, расположенную под строкой меню.

Мы увидим, что код завершился печатью чисел от 1 до 20000, но мы не смогли это остановить.

Шаг 8: Чтобы получить полный контроль над кодом, примените DoEvents после условий цикла, как показано ниже.

Код:

 Sub VBA_DoEvents () Dim A As Long для диапазона A = от 1 до 20000 («A1: A5»). Значение = A DoEvents Next A End Sub 

Шаг 9: Теперь снова запустите код. И в это время мы пытаемся остановить код, нажав кнопку «стоп», и мы заметим, что код будет остановлен между процессами до завершения пробной версии 20000.

Excel VBA DoEvents - Пример № 2

Существует другой тип процесса для реализации DoEvents. Но для этого нам также понадобится огромный код, как показано в примере-1. Для этого выполните следующие шаги:

Шаг 1: Напишите подпроцедуру VBA DoEvents, как показано ниже.

Код:

 Sub VBA_DoEvents2 () End Sub 

Шаг 2: Непосредственно открыть цикл For-next без определения переменной.

Код:

 Sub VBA_DoEvents2 () для следующего конца Sub 

Шаг 3: Выберите диапазон номеров, который будет работать. Пусть диапазон будет от 1 до 20000, как в примере-1.

Код:

 Sub VBA_DoEvents2 () для A = 1 до 20000 Next End Sub 

Шаг 4: Теперь непосредственно поместите любую работу для вывода, скажем, вывод такой, как показано ниже. И диапазон значений будет +1 от фактического значения.

Код:

 Sub VBA_DoEvents2 () Для A = 1 до 20000 Выход = Выход + 1 Следующий конец Sub 

Шаг 5: Теперь выберите диапазон, в котором мы хотим увидеть результат. Пусть клетка будет A1.

Код:

 Sub VBA_DoEvents2 () Для A = от 1 до 20000 Выход = Выход + 1 Диапазон («A1»). Значение = Выход Next End Sub 

Шаг 6: И наконец, мы поставим DoEvents в конце условия цикла For.

Код:

 Sub VBA_DoEvents2 () Для A = от 1 до 20000 Выход = Выход + 1 Диапазон («A1»). Значение = Выход DoEvents Next End Sub 

Шаг 7: Затем запустите код, нажав клавишу F5. Мы увидим, что мы можем делать что угодно, даже когда код работает. Для демонстрации я выбрал ячейки B1 и C1. Цифры достигли только 4348, что намного меньше установленного нами лимита.

Шаг 8: Если мы удалим DoEvents и запустим код, мы не сможем ничего сделать, пока код не завершит свой процесс. Давайте посмотрим это тоже.

Код:

 Sub VBA_DoEvents2 () Для A = от 1 до 20000 Выход = Выход + 1 Диапазон («A1»). Значение = Выход Next End Sub 

Шаг 9: Теперь запустите код снова. Как мы видим, пока мы пытались нажать «Стоп», код не останавливался. И функция воспроизведения все еще была включена.

Плюсы и минусы Excel VBA DoEvents

  • Мы можем работать с любым инструментом или файлом в фоновом режиме, пока код VBA будет работать параллельно.
  • Использование DoEvents не мешает нам делать ту работу, которую мы хотим, когда выполняется код.
  • Он перезаписывает рабочий лист или рабочую книгу, когда мы переключаемся между различными рабочими листами или рабочей книгой.
  • Код останавливается, когда мы пишем или меняем ячейку на мгновение, и мы не получаем уведомление.

То, что нужно запомнить

  • Если мы делаем что-либо без применения DoEvents, то существует большая вероятность того, что код сделает систему и файл заблокированными. И что мы либо возобновим файлы после того, как код будет полностью запущен, либо сломаем файл несколькими щелчками мыши.
  • Мы можем видеть изменения в процессе, одновременно работая над другой работой.
  • После завершения кода сохраните файл в формате Excel с поддержкой макросов, чтобы избежать потери кода.
  • Попробуйте применить код в огромном и большом наборе кодирования, там мы увидим фактическую реализацию и использование.

Рекомендуемые статьи

Это руководство по VBA DoEvents. Здесь мы обсуждаем, как использовать функцию DoEvents в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. Как использовать StrConv в Excel VBA?
  2. Преобразование чисел в текст в Excel (примеры)
  3. Функция VBA ByRef (Примеры с шаблоном Excel)
  4. Excel SUMIFS с датами | Шаблон Excel

Категория: