Функция за изчакване на VBA | Как да използвам метода за изчакване на Excel VBA?

Функция за изчакване на Excel VBA

VBA Wait е вградена функция, използвана за пауза на изпълнението на кода за определен период от време, много прилича на това, което правим в команда за заспиване и за пауза на код, използваме метода application.wait.

Някои от кодовете изискват известно време преди преминаване към следващия ред код, поради други задачи, които трябва да бъдат изпълнени. В тези случаи трябва да спрем кода да бъде изпълнен и да направим пауза за известно време, след което да продължим с изпълнението. Можем да поставим на пауза кода, който да бъде изпълнен по два начина, първият е методът „Sleep“, а вторият метод „Wait“. В по-ранната ни статия обсъдихме метода „VBA Sleep“ за поставяне на пауза на VBA кода.

„Изчакайте“, както самото име казва, че ще съдържа макрокода, който трябва да бъде изпълнен в определена времева рамка. Използвайки този метод, трябва да посочим времето, в което нашият код трябва да направи пауза, ще видим примери по-нататък.

Синтаксисът на функцията WAIT е както следва.

Трябва да споменем колко време нашият код трябва да прави пауза. Както можете да видите в края, той казва Boolean, това означава, че връща резултата като Boolean стойности, т.е. TRUE или FALSE.

До пристигането на посоченото време се казва FALSE и в момента, в който е пристигнал часът, се връща TRUE.

Това е за разлика от функцията SLEEP, защото WAIT е вградена функция, където SLEEP е функция на Windows. Преди да влезем в функцията SLEEP, трябва да споменем кода по-долу в горната част на модула. Но WAIT не изисква това.

Код:

# Ако VBA7 тогава публично декларира PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'за 64 битови системи # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' За 32 битови системи End End If 

Примери за използване на функцията за изчакване на Excel VBA

Можете да изтеглите този шаблон на VBA Wait Excel тук - VBA Wait Excel Template

Пример # 1

Да предположим, че работите в Excel в средата на деня в 14:30:00 и искате вашият код да бъде поставен на пауза, докато времето стане 14:40:00. Можете да използвате кода по-долу.

Код:

 Sub Wait_Example1 () Application.Cait "14:40:00" End Sub 

Кодът ще спре вашия Excel да работи, докато времето достигне 14:40:00 във вашата операционна система. Предоставянето на време като това е опасно, защото не винаги работим от 14:30:00, то постоянно се променя.

Да кажем, когато използвате кода, който искате да изчакате 2 минути, как да го препратите във вашия код?

Така че, можем да използваме функцията VBA NOW с функция TIME VALUE, за да въведем определеното време от текущото време.

Само за да ви напомня, функцията NOW () връща текущата дата и час според вашата компютърна система. Функцията TIMEVALUE представлява времето от 00:00:00 до 23:59:59, т.е. 23:59:59 PM в 24-часов формат. Той преобразува стойността на низа в стойност във времето.

За пример NOW () + TIMEVALUE (00:02:30) означава Текущо време + 2 минути 30 секунди.

Ако текущото време е 14:25:30, то става 14:28:00.

За да спрете или поставите на пауза изпълнението на вашия код от текущото време до следващите 10 минути, можете да използвате кода по-долу.

Код:

 Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

Важно е да използвате функцията NOW () за точна пауза, в противен случай има вероятност работната ви книга на Excel да е на пауза до полунощ. Въпреки това можем да излезем от метода на пауза по всяко време, като натиснем клавиша Esc или клавиша Break.

Пример # 2

Изчакайте 10 секунди всеки път, когато цикълът се изпълни

Методът на изчакване е добре използван с цикли. Има ситуации, при които може да се наложи да изчакате 10 секунди всеки цикъл на изпълнение. Например погледнете данните по-долу.

За да изчислите Печалба = (Продажби - Разходи) искате да създадете цикъл и след всеки цикъл искате да изчакате 10 секунди, за да проверите дали резултатът е точен или не. Кодът по-долу ще направи това.

Код:

 Sub Wait_Example3 () Dim k Като цяло за k = 2 до 9 клетки (k, 4). Стойност = клетки (k, 2) - Клетки (k, 3) Приложение. Изчакайте (Сега () + TimeValue ("00:00 : 10 ")) Следващ k Край Sub 

Този код ще изчисли колоната на печалбата ред по ред. След завършване на първия ред, той ще изчака 10 секунди, преди да изчисли следващия ред.

VBA Sleep срещу VBA Изчакайте

VBA SLEEPVBA ПОЧАКАЙТЕ
Това не е вградена функция на VBA, има нужда от специален код за достъп до тази функция.Това е вградена функция на VBA, не изисква специален код за достъп до тази функция.
Сънят изисква милисекунди като времева рамка.Изчакването изисква редовна времева рамка.
Можем да забавим кода за милисекундиМожем да забавим само за цели секунди.