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

Функция на DoEvents на Excel VBA

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

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

Как да използвам функцията DoEvents?

Необходимо е голямо количество VBA код, когато изискването е огромно. В тези случаи Excel виси и спира за известно време и дори понякога става неотзивчив.

Можете да изтеглите този шаблон на VBA DoEvents Excel тук - VBA DoEvents 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 е, когато превключваме работни листове или работни книги, тя замества активните стойности на листа.
  • Друга опасност е, че ако въведем някаква стойност в клетката, изпълнението на кода спира и тя дори не ни уведомява.
Забележка : Въпреки горните опасности от DoEvents, това все още е удобна функция. Можем да използваме DoEvents като част от процеса на отстраняване на грешки, когато се опитваме да поправим грешки в написания от нас код.