I-pause ang VBA | I-pause ang VBA Code gamit ang Sleep and Wait Function
I-pause ang VBA Code Mula sa Tumatakbo
I-pause ang VBA ay ginagamit upang i-pause ang code mula sa pagpapatupad nito para sa isang tinukoy na dami ng oras at upang i-pause ang isang code sa VBA ginagamit namin ang application.wait na pamamaraan.
Kapag nagtatayo kami ng mga malalaking proyekto ng VBA pagkatapos magsagawa ng isang bagay maaaring kailanganin nating maghintay ng kaunting oras upang makagawa ng iba pang mga gawain. Sa ganitong mga sitwasyon paano namin i-pause ang macro code upang gawin ang aming gawain? Maaari naming i-pause ang VBA code para sa isang tinukoy na tagal ng oras sa pamamagitan ng paggamit ng dalawang pag-andar at ang mga pagpapaandar na iyon ay "Maghintay" at "Matulog".
Paano I-pause ang Code gamit ang Wait Method?
Ang "Maghintay" ay ang pagpapaandar na ginagamit namin sa VBA upang i-hold ang macro na tumatakbo para sa isang tukoy na oras. Sa pamamagitan ng paglalapat ng pagpapaandar na ito kailangan nating banggitin hanggang sa anong oras dapat maghintay ang aming code.
Maaari mong i-download ang VBA Puse Excel Template dito - VBA I-pause ang Template ng ExcelHalimbawa, kung isinasagawa mo ang code sa 13:00:00 kung ibibigay mo ang oras bilang "13:15:00" pagkatapos ay hahawak ito sa macro na tumatakbo sa loob ng 15 minuto.
Ngayon, tingnan ang argumento ng pagpapaandar ng WAIT sa VBA.
Sa pagtatalo ng oras kailangan nating banggitin sa kung anong oras dapat i-pause o maghintay ang aming code.
Halimbawa, tingnan ang nasa ibaba VBA code.
Code:
Sub I-pause_Example1 () Saklaw ("A1"). Halaga = "Kamusta" Saklaw ("A2"). Halaga = "Maligayang pagdating" Application. Maghintay ("13:15:00") Saklaw ("A3"). Halaga = " Sa VBA "End Sub
Tandaan habang pinapatakbo ang code na ito ang oras ng aking system ay 13:00:00, sa sandaling patakbuhin ko ang code ay isasagawa nito ang unang dalawang linya ibig sabihin.
Saklaw ("A1"). Halaga = "Kamusta" & Saklaw ("A2"). Halaga = "Maligayang pagdating"
Ngunit kung titingnan mo ang susunod na linya sinasabi nito ang Application.Wait ("13:15:00"), kaya pagkatapos maisakatuparan ang mga gawain sa linya na iyon ang aking macro ay mapahinto sa loob ng 15 minuto ie mula 13:00:00 maghihintay ito hanggang sa aking system umabot ang oras 13:15:01.
Kapag naabot ng oras ng aking system ang oras na ito ay isasagawa nito ang natitirang mga linya ng code.
Saklaw ("A3"). Halaga = "Sa VBA"
Gayunpaman, hindi ito ang pinakamahusay na paraan ng pagsasanay ng pause code, sabihin nating pinapatakbo mo ang code sa iba't ibang oras, pagkatapos ay kailangan naming gamitin ang function na NGAYON VBA na may TIME VALUE function.
Ngayon ibabalik ng pagpapaandar ang kasalukuyang petsa at oras ayon sa system na aming pinagtatrabahuhan.
Halaga ng PANAHON hawak ng pagpapaandar ang oras mula 00:00:00 hanggang 23:59:29.
Ok, ipagpalagay na kailangan nating i-pause ang code sa loob ng 10 minuto tuwing pinapatakbo namin ang code, pagkatapos ay maaari naming gamitin ang code sa ibaba.
Code:
Sub Pause_Example1 () Saklaw ("A1"). Halaga = "Kamusta" Saklaw ("A2"). Halaga = "Maligayang pagdating" Application. Maghintay (Ngayon () + TimeValue ("00:00:10")) Saklaw (" A3 "). Halaga =" To VBA "End Sub
Ito ay katulad ng nakaraang code ngunit ang nag-iisa lamang na naidagdag namin ang function na NGAYON & TIME VALUE.
Tuwing tatakbo namin ang code na ito pipigilan o i-pause ang pagpapatupad ng 10 minuto.
Paano I-pause ang VBA Code gamit ang Sleep Method?
Ang pagtulog ay isang kumplikadong pagpapaandar sa VBA sapagkat hindi ito isang built-in na pagpapaandar. Dahil hindi ito isang built-in upang magamit itong magamit upang magamit kailangan naming idagdag ang code sa ibaba sa tuktok ng aming module.
Code:
# Kung VBA7 Pagkatapos Public Ipahayag ang PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Bilang LongPtr) 'Para sa 64 Bit System # Iba Pang Pampubliko Ipahayag Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Habang Mahaba) # Wakas Kung' Para sa 32 Bit Systems
Kailangan mo lamang kopyahin ang code sa itaas at i-paste ito sa tuktok ng module.
Ang dahilan kung bakit kailangan naming idagdag ang code sa itaas dahil ang SLEEP ay isang pagpapaandar ng VBA na ipinakita sa mga file ng Windows DLL, kaya kailangan naming ideklara ang nomenclature bago simulan ang subprocedure.
Ok, tingnan natin ang halimbawa ng pagpapaandar ng SLEEP ngayon.
Code:
Sub Pause_Example2 () Dim DimTime Bilang String Dim EndTime Bilang String StartTime = Oras MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub
Una, idineklara namin ang dalawang variable bilang String.
Dim StartTime Bilang String Dim EndTime Bilang String
Pagkatapos ay itinalaga namin ang pag-andar ng TIME excel sa variable na StartTime. Ang pagpapaandar ng TIME ay nagbabalik ng kasalukuyang oras ayon sa bawat system.
StartTime = Oras
Pagkatapos ay nakatalaga kami ng pareho upang ipakita sa kahon ng mensahe.
MsgBox StartTime
Pagkatapos ay inilapat ko ang function na SLEEP bilang Sleep (10000).
Dito 10000 ang milliseconds na katumbas ng 10 segundo sa VBA.
Pagkatapos, sa wakas, naitalaga ko ang isa pang pag-andar ng TIME sa variable EndTime.
Ngayon muli ay nagsulat ako ng isang code upang maipakita ang oras.
EndTime = Oras
Ipapakita nito ang pagkakaiba sa pagitan ng oras ng pagsisimula at oras ng pagtatapos.
Ngayon ay isasagawa ko ang code at tingnan kung ano ang oras ng pagsisimula.
Kapag naisagawa ko ang code ang oras ng aking system ay 13:40:48 at ngayon ang aking code ay matutulog ng 10 segundo. Sa huli, ang aking oras ay ang mga sumusunod.
Kaya, tulad nito, maaari nating i-pause ang code mula sa pagpapatupad nito sa isang tinukoy na tagal ng oras.