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

Функция Excel VBA DoEvents

С помощью VBA DoEvents мы можем запускать код в фоновом режиме и одновременно позволять нам работать с Excel и другим прикладным программным обеспечением. DoEvents не только позволяет нам работать с другим программным обеспечением, мы также можем прерывать выполнение кода.

Функция DoEvents передает управление операционной системе компьютера, над которым мы работаем.

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

Когда требования огромны, требуется большой объем кода VBA. В этих случаях excel зависает и останавливается на некоторое время, а иногда даже перестает отвечать.

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

Для примера посмотрите приведенный ниже код.

Код:

 Sub DoEvents_Example1 () Dim i As Long For i = 1–100000 Range ("A1"). Значение = i Next i End Sub 

Приведенный выше код вставит серийные номера от 1 до 100000. Выполнение задачи легко займет больше минуты. Во время выполнения excel зависает на значительное время для выполнения задачи. В это время в Excel отображается сообщение «Excel не отвечает».

Более того, мы не можем получить доступ к рабочему листу, над которым работаем. Это неприятно, но как же сделать так, чтобы рабочий лист Excel был доступен для работы, пока код работает за экраном.

Этого можно добиться, добавив функцию VBA DoEvents .

Код:

 Sub DoEvents_Example1 () Dim i As Long For i = 1–100000 Range ("A1"). Значение = i DoEvents Next i End Sub 

В тот момент, когда мы добавляем в код функцию DoEvents, мы получаем доступ к листу Excel.

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

Прервать выполнение кода

Когда код работает за экраном, мы можем добавлять строки, столбцы и удалять их, мы можем переименовывать лист, а также можем делать много других вещей. В тот момент, когда мы добавляем DoEvents, он заставляет код vba работать быстрее и позволяет нам понять, что упомянутая задача выполняется сама по себе.

  • Одна из опасностей функции DoEvents заключается в том, что когда мы переключаем листы или книги, она перезаписывает активные значения листа.
  • Другая опасность заключается в том, что если мы вводим в ячейку какое-либо значение, выполнение кода останавливается и даже не уведомляет нас.
Примечание . Несмотря на описанные выше опасности DoEvents, это по-прежнему удобная функция. Мы можем использовать DoEvents как часть процесса отладки, когда пытаемся исправить ошибки в написанном нами коде.