Функция на DoEvents на Excel VBA
С помощта на VBA DoEvents можем да накараме кода да работи във фонов режим и едновременно с това ни позволява да работим с Excel и друг приложен софтуер. DoEvents не само ни позволява да работим с друг софтуер, а можем и да прекъснем работата на кода.
Функцията DoEvents предава контрол върху операционната система на компютъра, върху който работим.

Как да използвам функцията DoEvents?
Необходимо е голямо количество VBA код, когато изискването е огромно. В тези случаи Excel прекъсва и спира за известно време и дори понякога става неотзивчив.
Например погледнете кода по-долу.
Код:
Sub DoEvents_Example1 () Dim i As Long For i = 1 To 100000 Range ("A1"). Value = i Next i End Sub

Горният код ще вмъкне серийни номера от 1 до 100000. Изпълнението на задачата лесно ще отнеме повече от минута. По време на изпълнението, Excel виси за значително време, за да изпълни задачата. През това време Excel показва съобщението като „Excel не отговаря“.

Освен това нямаме достъп до работния лист, по който работим. Това е разочароващо нещо, тогава как да направим работния лист на Excel да бъде достъпен за работа, докато кодът работи зад екрана.
Това може да се постигне чрез добавяне на функция VBA DoEvents .
Код:
Sub DoEvents_Example1 () Dim i As Long For i = 1 To 100000 Range ("A1"). Value = i DoEvents Next i End Sub

В момента, в който добавим функцията DoEvents в код, можем да получим достъп до работния лист на Excel.

От горното можем да видим, че кодът се изпълнява, но можем да получим достъп до работния лист.
Прекъснете стартиращия код
Когато кодът се изпълнява зад екрана, ние можем да добавяме редове, колони и да изтриваме същото, можем да преименуваме листа и можем да правим и много други неща. В момента, в който добавим DoEvents, той прави VBA кода да работи бързо и ни позволява да се провалим, че споменатата задача се изпълнява сама за себе си.
- Една от опасностите на функцията DoEvents е, когато превключваме работни листове или работни книги и тя замества активните стойности на листа.
- Друга опасност е, ако въведем някаква стойност в клетката, изпълнението на кода спира и тя дори не ни уведомява.