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

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

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

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

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

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

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

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

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

Код:

#If VBA7 Тогава Public Declare 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

Пример # 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 SLEEP VBA ПОЧАКАЙТЕ
Това не е вградена функция на VBA, има нужда от специален код за достъп до тази функция. Това е вградена функция на VBA, не изисква специален код за достъп до тази функция.
Сънят изисква милисекунди като времева рамка. Изчакването изисква редовна времева рамка.
Можем да забавим кода за милисекунди. Можем да забавим само за цели секунди.

Интересни статии...