VBA szünet | Szüneteltesse a VBA kódot az alvó és a várakozó funkció használatával

Szüneteltesse a VBA-kód futtatását

A VBA szünet arra szolgál, hogy szüneteltesse a kódot egy meghatározott ideig, és szüneteltesse a kódot a VBA-ban, amelyet az application.wait módszerrel használunk.

Ha nagy VBA-projekteket építünk valamilyen feladat végrehajtása után, akkor más feladatok elvégzésére egy ideig várnunk kell. Ilyen esetekben hogyan szüneteltethetjük a makrokódot a feladatunk elvégzéséhez? Két funkció használatával szüneteltethetjük a VBA kódot egy meghatározott időtartamra, és ezek a funkciók: „Várjon” és „Alvó”.

Hogyan lehet szüneteltetni a kódot a várakozási módszerrel?

A „Várjon” az a funkció, amelyet a VBA-ban használunk a makró futásának egy meghatározott ideig történő megtartására. Ennek a függvénynek az alkalmazásával meg kell említenünk, hogy a kódunk mennyi ideig várjon.

Ezt a VBA Pause Excel sablont innen töltheti le - VBA Pause Excel sablont

Például, ha 13: 00: 00-kor hajtja végre a kódot, ha az időt 13: 15: 00-ként adja meg, akkor 15 percig tartja a futó makrót.

Most nézze meg a WAIT függvény argumentumát a VBA-ban.

Az időérvben meg kell említenünk, hogy a kódunknak mikor kell szünetelnie vagy várnia.

Nézze meg például az alábbi VBA kódot.

Kód:

 Sub Pause_Példa1 () Tartomány ("A1"). Érték = "Hello" tartomány ("A2"). Érték = "Welcome" alkalmazás. Várjon ("13:15:00") Tartomány ("A3"). Érték = " A VBA-hoz "End Sub 

Ne feledje, hogy a kód futtatása közben a rendszeridőm 13:00:00, amint futtatom a kódot, végrehajtja az első két sort, azaz

Tartomány ("A1"). Érték = "Hello" és tartomány ("A2"). Érték = "Welcome"

De ha megnézzük a következő sort, az Application.Wait („13:15:00”) felirattal rendelkezik, így a sorok végrehajtása után a makróm 15 percig szünetel, azaz 13:00:00 -tól várni fog, amíg a rendszerem nem lesz az idő eléri a 13:15:01 -et.

Amint eléri a rendszeridőm, végrehajtja a fennmaradó kódsorokat.

Tartomány ("A3"). Érték = "VBA-hoz"

Ez azonban nem a legjobb módszer a szünetkód gyakorlására, tegyük fel, hogy a kódot különböző időpontokban futtatja, akkor a MOST VBA függvényt kell használnunk az IDŐÉRTÉK funkcióval.

A Now függvény visszaadja az aktuális dátumot és időpontot a rendszeren, amelyen dolgozunk.

TIME Value függvény az időt 00:00:00 és 23:59:29 között tartja.

Ok, feltételezzük, hogy 10 percig szüneteltetnünk kell a kódot, valahányszor futtatjuk a kódot, akkor használhatjuk az alábbi kódot.

Kód:

 Sub Pause_Példa1 () Tartomány ("A1"). Érték = "Hello" tartomány ("A2"). Érték = "Welcome" alkalmazás. Várjon (Most () + TimeValue ("00:00:10")) Tartomány (" A3 "). Érték =" A VBA-hoz "End Sub 

Ez hasonló az előző kódhoz, de az egyetlen különbség az, hogy hozzáadtuk a MOST & IDŐ ÉRTÉK függvényt.

Amikor ezt a kódot futtatjuk, 10 percig megtartja vagy szünetelteti a végrehajtást.

Hogyan lehet szüneteltetni a VBA kódot alvó móddal?

Az alvás bonyolult funkció a VBA-ban, mert nem beépített funkció. Mivel ez nem beépített annak érdekében, hogy használható legyen, hozzá kell adnunk az alábbi kódot a modulunk tetejéhez.

Kód:

# Ha VBA7, akkor Nyilvános deklarálja a PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) "64 bites rendszerekhez 

Csak át kell másolnia a fenti kódot, és be kell illesztenie a modul tetejére.

Az ok, amiért hozzá kell adnunk a fenti kódot, mert a SLEEP egy VBA függvény, amelyet a Windows DLL fájlok mutatnak be, ezért az alfolyamat megkezdése előtt deklarálnunk kell a nómenklatúrát.

Ok, most nézzük meg a SLEEP függvény példáját.

Kód:

 Sub Pause_Példa2 () Dim StartTime mint karakterlánc Dim EndTime As karakterlánc StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Először két változót deklaráltunk String-nek.

 Dim StartTime as String A Dim EndTime as String 

Ezután hozzárendeltük a TIME excel függvényt a StartTime változóhoz. A TIME függvény az aktuális időt adja vissza a rendszer szerint.

StartTime = Idő

Ezután hozzárendeltük ugyanazt, hogy megjelenjen az üzenet mezőben.

MsgBox StartTime

Ezután alvásként (10000) alkalmaztam a SLEEP funkciót.

Itt 10000 ezredmásodperc, ami egyenlő 10 másodperccel a VBA-ban.

Ezután végül még egy TIME függvényt rendeltem az EndTime változóhoz .

Most megint írtam egy kódot az idő megjelenítésére.

EndTime = Idő

Ez megmutatja a különbséget a kezdési és a befejezési idő között.

Most végrehajtom a kódot, és megnézem, mi a kezdési idő.

Amikor végrehajtom a kódot, a rendszeridőm 13:40:48, és most 10 másodpercig alszik a kódom. A végén az én időm a következő.

Tehát így szüneteltethetjük a kód végrehajtását egy meghatározott ideig.