Excel VBA Sleep Function upang I-pause ang Iyong Macro Code

Pag-andar sa pagtulog ng Excel VBA

VBA Tulog Ang pagpapaandar ay isang pagpapaandar ng windows na naroroon sa ilalim ng mga windows DLL file na ginagamit upang ihinto o i-pause ang pamamaraan ng macro mula sa pagtakbo para sa isang tinukoy na dami ng oras pagkatapos ng tiyak na halaga na maaari naming ipagpatuloy ang programa.

May mga sitwasyon kung saan kailangan naming i-pause ang aming proseso ng pagpapatakbo ng macro upang makumpleto ang iba pang mga hanay ng mga gawain. Ang iba pang mga hanay ng mga gawain ay maaaring maging bahagi ng aming pag-coding o bahagi ng iba pang pamamaraan ng macro o maaari itong maging input para sa kasalukuyang excel macro. Paano mo maa-pause ang programa kung tumatakbo ito? Maaari naming i-pause ang code ng pamamaraan para sa ilang oras na tinukoy ng gumagamit at pagkatapos ng tiyak na halaga na maaari naming ipagpatuloy ang programa. Maaari nating gawin ito sa VBA sa pamamagitan ng paggamit ng function na SLEEP.

Ano ang Ginagawa ng VBA Sleep Function?

Nakatulog tulad ng mismong pangalan na nagsasabing "matulog nang kaunting oras", "pahinga nang ilang oras", "huminto para sa oras", magpahinga nang ilang oras "atbp .. Pinapayagan ng pagpapaandar ng pagtulog ang mga gumagamit na i-pause ang aming macro code sa para sa milliseconds. Gamit ito maaari naming antalahin ang proseso ng macro code.

Kung sa palagay mo mayroon kaming built-in na function na tinatawag na SLEEP kung gayon mali ka dahil sa VBA walang ganoong pagpapaandar sa halip mayroon kaming isang function na tinatawag na Sleep as a windows function. Sa pamamagitan ng pagpasok ng isang espesyal na hanay ng code maaari talaga nating tawagan ang pagpapaandar na ito sa VBA. Sa katunayan, ito ay isang pagpapaandar na nasa loob ng mga file ng Windows DLL, kaya kailangan naming ideklara ang nomenclature ng API bago magsimula ang subroutine sa vba.

Nasa ibaba ang VBA code.

Code:

# Kung VBA7 Pagkatapos Public Ipahayag ang PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds Bilang LongPtr) 'Para sa 64-Bit na mga bersyon ng Excel # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Para sa mga 32-Bit na bersyon ng Excel # Tapusin Kung 

Kopyahin ang nasa itaas at i-paste sa iyong module bago mo simulang isulat ang mga macro code. Dapat itong mai-paste tulad nito sa iyong module.

Halimbawa

Bago ko ipakita sa iyo ang paraan ng pagsulat ng code hayaan mo akong sabihin sa iyo ang tungkol sa pagpapaandar ng pagtulog nang kaunti pa. Naantala nito ang proseso sa milliseconds. Kaya't ang 1 segundo ay katumbas ng 1000 milliseconds, kung nais mong i-pause ng 10 segundo dapat na 10000 milliseconds.

Maaari mong i-download ang Template ng VBA Sleep Excel na ito - VBA Sleep Excel Template

Halimbawa # 1

Kapag na-paste ang code ng API bago magsimula ang pamamaraan ng Sub, lumikha ng isang pangalang macro.

Code:

# Sub Sleep_Example1 () End Sub 

Ipahayag ang dalawang variable bilang isang string.

Code:

 Dim StartTime Bilang String Dim EndTime Bilang String 

Para kay Oras ng simula variable italaga ang halaga ng TIME function. Tandaan: Ang TIME sa excel function ay nagbabalik ng kasalukuyang oras.

Code:

StartTime = Oras

Ipapakita namin ang mensaheng ito sa kahon ng mensahe na VBA.

Code:

StartTime = Oras MsgBox StartTime

Ngayon ay i-pause namin ang code sa loob ng 10 segundo gamit ang pagpapaandar ng pagtulog. Tulad ng sinabi ko sa ito ay naka-pause ang code sa milliseconds upang mag-pause ng 10 segundo kailangan naming gumamit ng 10000 milliseconds.

Code:

 Sub Sleep_Example1 () Dim DimTime Bilang String Dim EndTime Bilang String StartTime = Oras MsgBox StartTime Sleep (10000) End Sub 

Ngayon gamitin ang pangalawang variable EndTime at italaga ang kasalukuyang oras.

Code:

 Sub Sleep_Example1 () Madilim StartTime Bilang String Dim EndTime Bilang String StartTime = Oras MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Ngayon dalawang variable Oras ng simula at EndTime hahawak ng oras ng pagsisimula ng macro at oras ng pagtatapos. Patakbuhin ang macro na ito, sa una ay makikita namin ang oras ng pagsisimula ng macro ie kasalukuyang oras sa iyong system.

Mag-click sa OK, matutulog ito ng 10 segundo. Maaari mong makita ang simbolo ng buffer.

Pagkatapos ng 10 segundo magsisimula itong ipagpatuloy ang code kaya, ipapakita nito ang oras ng pagtatapos ibig sabihin pagkatapos maghintay ng 10 segundo ano ang kasalukuyang oras ngayon.

Ngayon ay makikita mo ang macro na nagsimula sa 10:54:14 at nagtapos sa 10:54:24 ibig sabihin eksakto ang 10-segundong pagkakaiba ay naroon. Sa 10 segundong iyon, i-pause ng VBA ang pagpapatakbo ng code.

Halimbawa # 2 - Tulog na Pag-andar sa Mga loop

Pinakamahusay na ginagamit ang pagtulog sa mga loop sa VBA. Halimbawa, nais kong ipasok ang mga serial number mula 1 hanggang 10 gamit ang Do habang loop sa VBA.

Matapos ipasok ang isang numero dapat maghintay ang aking code ng 3 segundo, kaya't kapag tumatakbo ang loop ng 10 beses dapat itong 30 segundo sa kabuuan.

Code:

 Sub Sleep_Example2 () Dim k Bilang Integer k = 1 Gawin Habang k <= 10 Cells (k, 1). Halaga = kk = k + 1 Sleep (3000) '1000 milliseconds ay 1 segundo kaya ang 3000 ay katumbas ng 3 segundo ng Loop End Sub 

Patakbuhin ang code na ito at kailangan mong maghintay para sa isang minimum na 30 segundo upang makumpleto ang proseso.

Upang subaybayan ang eksaktong oras gamitin ang code sa ibaba.

Code:

 Sub Sleep_Example2 () Dim k Bilang Integer Dim StartTime Bilang String Dim EndTime Bilang String StartTime = Oras MsgBox "Ang iyong Code ay Nagsimula sa" & StartTime k = 1 Gawin Habang k <= 10 Mga Cell (k, 1). Halaga = kk = k + 1 Sleep (3000) '1000 milliseonds ay 1 segundo kaya ang 3000 ay katumbas ng 3 segundo Loop EndTime = Time MsgBox "Natapos ang iyong Code sa" & EndTime End Sub 

Ipapakita sa iyo ng code na ito ang 2 kahon ng mensahe, ipapakita ng una ang oras ng pagsisimula at ang pangalawa ay ipapakita ang oras ng pagtatapos.

Tandaan: Habang pinapatakbo ang code na ito, hindi ka maaaring gumamit ng excel, kahit na ang makatakas na susi ay hindi gagana.