Az Excel VBA alvó funkció szünetelteti a makrokódot

Tartalomjegyzék

Excel VBA alvó funkció

A VBA Sleep funkció egy Windows függvény, amely a Windows DLL fájlok alatt található, és arra szolgál, hogy egy bizonyos ideig leállítsa vagy szüneteltesse a makró eljárás futtatását, miután a program bizonyos időtartama folytatható.

Vannak olyan helyzetek, amikor szüneteltetnünk kell a makrófuttatási folyamatot más feladatsorok teljesítéséhez. Más feladatsorok lehetnek a kódolásunk részei vagy más makroprocedúrák részei, vagy bevihetők az aktuális excel makróhoz. Hogyan szüneteltetheti a programot, amikor fut? A felhasználó által meghatározott ideig szüneteltethetjük az eljárási kódot, és ezt követően bizonyos mennyiségű programot folytathatjuk. Ezt megtehetjük a VBA-ban a SLEEP függvény használatával.

Mit csinál a VBA alvás funkció?

A SLEEP, amint maga a neve is mondja, „aludni egy ideig”, „pihenni egy ideig”, „egy ideig szünetelni”, egy időre kikapcsolni stb.… Az alvás funkció lehetővé teszi a felhasználók számára, hogy ezredmásodpercekre szüneteltessék a makrokódunkat . Ennek használatával késleltethetjük a makrokód folyamatát.

Ha úgy gondolja, hogy van egy SLEEP nevű beépített függvényünk, akkor téved, mert a VBA-ban nincs ilyen funkció. Inkább van egy alvás, mint Windows funkció. Egy speciális kódkészlet megadásával ezt a függvényt valóban meghívhatjuk a VBA-ban. Valójában ez egy olyan funkció, amely a Windows DLL fájlokban található, ezért az VBA szubrutin kezdete előtt deklarálnunk kell az API nomenklatúráját.

Az alábbiakban a VBA kód található.

Kód:

#Ha VBA7, akkor nyilvános deklarálja a PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) "Az Excel 64 bites verzióihoz #Else Public Declare Sub Sleep Lib" kernel32 "(ByVal dwMilliseconds As Long)" A 32 bites Excel #End If

Másolja a fentieket, és illessze be a modulba, mielőtt elkezdi írni a makrókódokat. Így kell beilleszteni a modulba.

Példa

Mielőtt megmutatnám a kódírás módját, hadd mondjak még egy kicsit az alvás funkcióról. Ezredmásodpercekben késlelteti a folyamatot. Tehát 1 másodperc egyenlő 1000 milliszekundummal, ha 10 másodpercig szeretne szünetet tartani, akkor 10000 milliszekundum legyen.

1. példa

Miután az API kód ​​be lett illesztve a Sub eljárás megkezdése előtt, hozzon létre egy makrónevet.

Kód:

#Sub Sleep_Példa1 () End Sub

Nyújtson be két változót stringként.

Kód:

Dim StartTime as String A Dim EndTime as String

A StartTime változóhoz rendelje hozzá a TIME függvény értékét. Megjegyzés: A TIME az excel függvényben az aktuális időt adja vissza.

Kód:

StartTime = Idő

Most ezt az üzenetet megjelenítjük a VBA üzenetmezőben.

Kód:

StartTime = Idő MsgBox StartTime

Most 10 másodpercig szüneteltetjük a kódot az alvás funkció használatával. Mint mondtam, ez milliszekundumban szünetelteti a kódot, tehát 10 másodpercig szünetelteti. 10000 ezredmásodpercet kell használnunk.

Kód:

Alvás_Példa1 () Dim StartTime mint karakterlánc Dim EndTime As karakterlánc StartTime = Idő MsgBox StartTime Sleep (10000) End Sub

Most használja a második változót, az EndTime-et, és rendelje hozzá az aktuális időt.

Kód:

Alvás_Példa1 () Dim StartTime mint karakterlánc Dim EndTime As karakterlánc StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub

Most két változó - StartTime és EndTime - fogja tartani a makró kezdési és befejezési idejét. Futtassa ezt a makrót; eleinte látni fogjuk a makró kezdési idejét, vagyis az aktuális időt a rendszerben.

Kattintson az OK gombra. 10 másodpercig alszik. Láthatja a puffer szimbólumot.

10 másodperc múlva elkezdi folytatni a kódot, így megmutatja a befejezés időpontját, azaz 10 másodperc várakozás után mi a jelenlegi idő.

Most láthatja, hogy a makró 10: 54: 14-kor kezdődött és 10: 54: 24-kor végződött, vagyis pontosan ott van a 10 másodperces különbség. Ebben a 10 másodpercben a VBA szünetelteti a kód futtatását.

2. példa - Alvás funkció hurokban

Az alvást leginkább a VBA hurkok használatával lehet használni. Például 1 és 10 közötti sorszámokat szeretnék beszúrni a Do while ciklus használatával a VBA-ban.

Az egy szám beillesztése után a kódomnak 3 másodpercig várnia kell, tehát amikor a hurok tízszer fut, akkor összesen 30 másodpercnek kell lennie.

Kód:

Alvás_példa2 () Dim k As egész szám k = 1 Do Míg k <= 10 sejt (k, 1). Érték = kk = k + 1 Sleep (3000) '1000 milliszekundum 1 másodperc, tehát 3000 egyenlő 3 másodperccel Alatti

Futtassa ezt a kódot, és legalább 30 másodpercet kell várnia a folyamat befejezéséhez.

A pontos idő követéséhez használja az alábbi kódot.

Kód:

Al Sleep_Példa2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "A kódod kezdődött" & StartTime k = 1 Do While k <= 10 Cellák (k, 1). Érték = kk = k + 1 Sleep (3000) '1000 milliszekundum 1 másodperc, tehát 3000 egyenlő 3 másodperccel. Loop EndTime = Time MsgBox "A kódod vége" & EndTime End Sub

Ez a kód 2 üzenetmezőt jelenít meg, az első a kezdési időt, a második a befejezés időpontját mutatja.

Megjegyzés: A kód futtatása közben nem használhatja az excelt. Még a menekülési kulcs sem fog működni.

érdekes cikkek...