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 () Край Sub 

Стъпка 3: Сега дефинирайте променлива във всяко име с типове данни Long. Целта на разглеждането на типа данни като Дълга е, защото ще приемаме всякаква дължина от данни, която искаме, което не е възможно, ако вземем предвид Integer.

Код:

 Sub VBA_DoEvents () Dim A As Long End Sub 

Стъпка 4: Сега отворете контур For-Next, където ще поставим условията.

Код:

 Sub VBA_DoEvents () Dim A as Long For Next A End Sub 

Стъпка 5: Помислете за обхвата на избрания от вас брой, който може да бъде видян при изпълнението. Тук приемаме диапазона 1 до 2000 в дефинирана променлива А.

Код:

 Sub VBA_DoEvents () Dim A as Long For A = 1 to 20000 Next A End Sub 

Стъпка 6: След като определим диапазона от числа, ще изберем диапазона от клетки, където ще видим промените в числата, които сме избрали по-горе. Да речем, че обхватът на клетките е от А1 до А5. Това може да бъде и една клетка.

Код:

 Sub VBA_DoEvents () Dim A as Long For A = 1 to 20000 Range ("A1: A5"). Value = A Next A End Sub 

Стъпка 7: Сега стартирайте кода, като кликнете върху бутона Play, разположен под лентата на менюто.

Ще видим, кодът завърши с отпечатването на числата от 1 до 20000, но не можахме да го спрем.

Стъпка 8: За да получите пълен контрол върху кода, приложете DoEvents след условията на цикъл, както е показано по-долу.

Код:

 Sub VBA_DoEvents () Dim A as Long For A = 1 to 20000 Range ("A1: A5"). Value = A DoEvents Next A End Sub 

Стъпка 9: Сега отново стартирайте кода. И в този момент се опитваме да спрем кода, като щракнем върху бутона за спиране, ще забележим, че кодът ще бъде спрян между процесите, преди да завърши пробната версия на 20000.

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

Има и друг тип процес за внедряване на DoEvents. Но за това също ще ни трябва огромен код, както се вижда в пример-1. За това следвайте стъпките по-долу:

Стъпка 1: Напишете подпроцедурата на VBA DoEvents, както е показано по-долу.

Код:

 Sub VBA_DoEvents2 () Край Sub 

Стъпка 2: Отворете директно цикъл For-next, без да дефинирате променлива.

Код:

 Sub VBA_DoEvents2 () За следващия край Sub 

Стъпка 3: Изберете диапазон от числа, който ще видим да работи. Нека диапазонът е 1 до 20000 същият като пример-1.

Код:

 Sub VBA_DoEvents2 () За A = 1 до 20000 Следващ край Sub 

Стъпка 4: Сега директно поставете каквато и да е работа за изход, да речем, че изходът е както е показано по-долу. И диапазонът на стойностите ще бъде +1 от действителната стойност.

Код:

 Sub VBA_DoEvents2 () За A = 1 До 20000 Изход = Изход + 1 Следващ край Под 

Стъпка 5: Сега изберете диапазона, в който искаме да видим изхода. Нека клетката е A1.

Код:

 Под VBA_DoEvents2 () за A = 1 до 20000 изход = изход + 1 обхват ("A1"). Стойност = изход следващ край под 

Стъпка 6: И най-накрая ще поставим DoEvents в края на условието за цикъл.

Код:

 Под VBA_DoEvents2 () за A = 1 до 20000 изход = изход + 1 обхват ("A1"). Стойност = изход DoEvents следващ край 

Стъпка 7: И след това стартирайте кода, като натиснете клавиша F5. Ще видим, можем да направим всичко, дори когато кодът работи. За демонстрация съм избрал клетките B1 и C1. Цифрите достигнаха само при 4348, което е доста по-малко от лимита, който поставихме.

Стъпка 8: Ако премахнем DoEvents и стартираме кода, няма да можем да направим нищо, докато кодът не завърши процеса си. Да видим и това.

Код:

 Под VBA_DoEvents2 () за A = 1 до 20000 изход = изход + 1 обхват ("A1"). Стойност = изход следващ край под 

Стъпка 9: Сега стартирайте кода отново. Както виждаме, докато се опитвахме да кликнем върху Stop, кодът не спря. А функцията Play все още беше включена.

Плюсовете и минусите на 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

Категория: