VBA пауза | Поставете на пауза VBA кода, като използвате функцията Sleep and Wait

Поставете VBA кода на пауза от стартиране

VBA Pause се използва за пауза на кода от изпълнението му за определен период от време и за пауза на код във VBA използваме метода application.wait.

Когато изграждаме големи VBA проекти след извършване на нещо, може да се наложи да изчакаме известно време, за да изпълним други задачи. В такива сценарии как да поставим на пауза кода на макроса, за да изпълним задачата си? Можем да поставим на пауза кода на VBA за определен период от време, като използваме две функции и тези функции са „Изчакайте“ и „Спи“.

Как да поставите на пауза код, използвайки метода на изчакване?

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

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

Например, ако изпълнявате кода в 13:00:00, ако посочите времето като „13:15:00“, тогава той ще задържи макроса да работи 15 минути.

Сега вижте аргумента на функцията WAIT във VBA.

Като аргумент във времето трябва да споменем по кое време нашият код трябва да направи пауза или да изчака.

Например погледнете кода по-долу VBA.

Код:

 Подпауза_Пример1 () Обхват ("A1"). Стойност = "Здравейте" Обхват ("A2"). Стойност = "Добре дошли" Приложение. Изчакайте ("13:15:00") Обхват ("A3"). Стойност = " Към VBA "End Sub 

Не забравяйте, че докато изпълнявам този код, системното ми време е 13:00:00, веднага след като стартирам кода, той ще изпълни първите два реда, т.е.

Обхват ("A1"). Value = "Hello" & Range ("A2"). Value = "Welcome"

Но ако погледнете следващия ред, се казва Application.Wait („13:15:00”), така че след изпълнението на тези редове макросът ми ще бъде поставен на пауза за 15 минути, т.е. от 13:00:00 ще изчака, докато системата ми времето достига 13:15:01.

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

Обхват ("A3"). Стойност = "До VBA"

Това обаче не е най-добрият начин за практикуване на кода за пауза, да речем, че използвате кода по различно време, тогава трябва да използваме функцията NOW VBA с функция TIME VALUE.

Функцията Now връща текущата дата и час според системата, по която работим.

Функцията TIME Value поддържа времето от 00:00:00 до 23:59:29.

Добре, приемете, че трябва да поставим кода на пауза за 10 минути, когато стартираме кода, тогава можем да използваме кода по-долу.

Код:

 Подпауза_Пример1 () Обхват ("A1"). Стойност = "Здравей" Обхват ("A2"). Стойност = "Добре дошли" Приложение. Изчакайте (Сега () + TimeValue ("00:00:10")) Обхват (" A3 "). Стойност =" Към VBA "Край Sub 

Това е подобно на предишния код, но единствената разлика е, че сме добавили функция NOW & TIME VALUE.

Всеки път, когато изпълним този код, той ще задържи или постави на пауза изпълнението за 10 минути.

Как да поставите на пауза VBA кода, използвайки метод на заспиване?

Сънят е сложна функция във VBA, тъй като не е вградена функция. Тъй като той не е вграден, за да го направи достъпен за употреба, трябва да добавим кода по-долу в горната част на нашия модул.

Код:

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

Просто трябва да копирате горния код и да го поставите в горната част на модула.

Причината, поради която трябва да добавим горния код, тъй като SLEEP е VBA функция, представена в Windows DLL файлове, така че трябва да декларираме номенклатурата, преди да стартираме подпроцедурата.

Добре, нека сега разгледаме примера на функцията SLEEP.

Код:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Първо, декларирахме две променливи като String.

 Затъмняване на началното време като низ Затъмняване на крайното време като низ 

След това сме присвоили функцията TIME excel на променливата StartTime. Функцията TIME връща текущото време според системата.

StartTime = Време

След това сме задали същото за показване в полето за съобщения.

MsgBox StartTime

Тогава съм приложил функцията SLEEP като Sleep (10000).

Тук 10000 са милисекунди, което е равно на 10 секунди във VBA.

След това най-накрая присвоих още една функция TIME на променливата EndTime .

Сега отново написах код, който да показва времето.

EndTime = Време

Това ще покаже разликата между началния и крайния час.

Сега ще изпълня кода и ще видя какво е началното време.

Когато изпълня кода, системното ми време е 13:40:48 и сега кодът ми ще спи за 10 секунди. Накрая времето ми е следното.

Така че, по този начин можем да поставим кода на пауза от изпълнението му за определен период от време.