Excel VBA miega funkcija, lai apturētu jūsu makro kodu

Satura rādītājs

Excel VBA miega funkcija

VBA miega funkcija ir Windows funkcija, kas atrodas zem Windows DLL failiem, ko izmanto, lai apturētu vai apturētu makro procedūras darbību noteiktu laiku pēc tam, kad mēs varam atsākt programmu.

Pastāv situācijas, kad mums jāpārtrauc makro darbības process, lai pabeigtu citus uzdevumu kopumus. Citi uzdevumu komplekti varētu būt daļa no mūsu kodēšanas vai citas makro procedūras, vai arī tie varētu būt pašreizējā Excel makro ievade. Kā jūs varat apturēt programmas darbību, kad tā darbojas? Mēs varam kādu laiku apturēt lietotāja norādīto procedūras kodu, un pēc tam zināmu daudzumu mēs varam atsākt programmu. Mēs to varam izdarīt VBA, izmantojot funkciju SLEEP.

Ko dara VBA miega funkcija?

MIEGS, kā saka pats nosaukums, “kādu laiku gulēt”, “kādu laiku atpūsties”, “kādu laiku apstāties, kādu laiku izslēgt laiku” utt. Miega funkcija ļauj lietotājiem apturēt mūsu makro kodu milisekundes . Izmantojot to, mēs varam aizkavēt makro koda procesu.

Ja jūs domājat, ka mums ir iebūvēta funkcija ar nosaukumu SLEEP, tad jūs kļūdāties, jo VBA šādas funkcijas nav. Drīzāk mums ir funkcija, ko sauc par miega režīmu kā logu funkciju. Ievadot īpašu kodu kopu, mēs faktiski varam izsaukt šo funkciju VBA. Faktiski tā ir funkcija, kas atrodas Windows DLL failos, tāpēc mums ir jādeklarē API nomenklatūra pirms VBA apakšprogrammas sākuma.

Zemāk ir VBA kods.

Kods:

# Ja VBA7, tad publiski paziņojiet PtrSafe Sub Sleep Lib "kodols32" (ByVal dwMilliseconds As LongPtr) "Excel 64 bitu versijām #Else Public Declare Sub Sleep Lib" kodols32 "(ByVal dwMilliseconds As Long)" 32 bitu versijām Excel # Beigt Ja

Nokopējiet iepriekš minēto un ielīmējiet modulī, pirms sākat rakstīt makro kodus. Šādi tas ir jāielīmē jūsu modulī.

Piemērs

Pirms parādīšu koda rakstīšanas veidu, ļaujiet man nedaudz vairāk pastāstīt par miega funkciju. Tas aizkavē procesu milisekundēs. Tātad 1 sekunde ir vienāda ar 1000 milisekundēm, ja vēlaties pārtraukt 10 sekundes, tam vajadzētu būt 10000 milisekundēm.

1. piemērs

Kad API kods ir ielīmēts pirms apakšprocedūras sākuma, izveidojiet makro nosaukumu.

Kods:

#Sub Sleep_Example1 () Beigu apakšnodaļa

Pasludiniet divus mainīgos kā virkni.

Kods:

Dim StartTime kā virkne Dim EndTime kā virkne

Par StartTime mainīgo, piešķirt vērtību TIME funkciju. Piezīme: Excel laiks TIME atgriež pašreizējo laiku.

Kods:

StartTime = laiks

Tagad mēs parādīsim šo ziņojumu ziņojumu lodziņā VBA.

Kods:

StartTime = Laiks MsgBox StartTime

Tagad mēs pārtrauksim kodu 10 sekundes, izmantojot miega funkciju. Kā es teicu, koda darbība tiek pārtraukta milisekundēs, tāpēc, lai pārtrauktu 10 sekundes. Mums jāizmanto 10000 milisekundes.

Kods:

Sub Sleep_Piemērs1 () Dim StartTime kā virkne Dim EndTime As virkne StartTime = Time MsgBox StartTime Sleep (10000) End Sub

Tagad izmantojiet otro mainīgo EndTime un piešķiriet pašreizējo laiku.

Kods:

Sub Sleep_Piemērs1 () Dim StartTime kā virkne Dim EndTime As virkne StartTime = Laiks MsgBox StartTime Miega režīms (10000) EndTime = Laiks MsgBox EndTime End Sub

Tagad divi mainīgie StartTime un EndTime satur makro sākuma laiku un beigu laiku. Palaist šo makro; Sākumā mēs redzēsim makro sākuma laiku, ti, pašreizējo laiku jūsu sistēmā.

Noklikšķiniet uz Labi. Tas gulēs 10 sekundes. Jūs varat redzēt bufera simbolu.

Pēc 10 sekundēm tas sāks atjaunot kodu, lai parādītu beigu laiku, ti, pēc 10 sekundes gaidīšanas, kāds ir pašreizējais laiks.

Tagad jūs varat redzēt makro, kas sākās pulksten 10:54:14 un beidzās pulksten 10:54:24, ti, tieši 10 sekunžu starpība ir. Šajās 10 sekundēs VBA pārtrauc koda darbību.

2. piemērs - miega funkcija cilpās

Miegu vislabāk izmantot ar cilpām VBA. Piemēram, es vēlos ievietot sērijas numurus no 1 līdz 10, izmantojot VBA cilni Do while loop.

Pēc viena numura ievietošanas manam kodam vajadzētu gaidīt 3 sekundes, tāpēc, kad cilpa darbojas 10 reizes, tam kopumā jābūt 30 sekundēm.

Kods:

Apakšējais miega_piemērs2 () Dim k kā vesels skaitlis k = 1 Do Kamēr k <= 10 šūnas (k, 1). Vērtība = kk = k + 1 Sleep (3000) '1000 milisekundes ir 1 sekunde, tāpēc 3000 ir vienāds ar 3 sekundēm Cilpa beigas Apakšgrupa

Palaidiet šo kodu, un jums ir jāgaida vismaz 30 sekundes, lai pabeigtu procesu.

Lai izsekotu precīzu laiku, izmantojiet zemāk esošo kodu.

Kods:

Sub Sleep_Piemērs2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Jūsu kods sākās pēc" & StartTime k = 1 Dariet, kamēr k <= 10 šūnas (k, 1). Vērtība = kk = k + 1 miega režīms (3000) '1000 milisekundes ir 1 sekunde, tāpēc 3000 ir vienāds ar 3 sekundēm. Loop EndTime = Time MsgBox "Jūsu kods beidzās" & EndTime End Sub

Šis kods parādīs jums 2 ziņojumu lodziņus, pirmais parādīs sākuma laiku, bet otrais - beigu laiku.

Piezīme. Palaižot šo kodu, nevar izmantot Excel. Pat bēgšanas atslēga nedarbosies.

Interesanti raksti...