Excel VBA várakozási funkció
A VBA Wait egy beépített függvény, amelyet a kód végrehajtásának szüneteltetésére használnak egy meghatározott ideig, nagyon hasonlít ahhoz, amit alvásparancsban csinálunk, és szüneteltethetünk egy kódot, amelyet az application.wait módszerrel használunk.
Néhány kód megköveteli valamikor, mielőtt továbblépne a következő kódsorra, más elvégzendő feladatok miatt. Ezekben az esetekben le kell állítanunk a végrehajtandó kódot, és egy ideig szüneteltetnünk, majd folytatnunk kell a végrehajtást. Kétféleképpen szüneteltethetjük a végrehajtandó kódot: az első a „Sleep”, a második a „Wait” módszer. Korábbi cikkünkben megvitattuk a „VBA Sleep” módszert a VBA kód szüneteltetésére.
„Várjon”, mivel maga a név azt mondja, hogy a végrehajtandó makrokódot egy meghatározott időkereten belül tartja. Ezzel a módszerrel meg kell adnunk a kód szüneteltetésének idejét, a következő példákat láthatjuk.
A WAIT függvény szintaxisa a következő.
Meg kell említenünk, hogy a kódunknak mennyi ideig kell szünetelnie. Amint láthatja a végén Boolean-t, ez azt jelenti, hogy az eredményt logikai értékekként adja vissza, azaz IGAZ vagy HAMIS.
Amíg a megadott idő el nem érkezik, a FALSE feliratot mondja, és a megadott idő elérésekor IGAZ értéket ad vissza.
Ez ellentétben van a SLEEP funkcióval, mivel a WAIT egy beépített funkció, ahol a SLEEP egy Windows funkció. Mielőtt hozzáférnénk a SLEEP funkcióhoz, meg kell említenünk az alábbi kódot a modul tetején. De a WAIT nem igényli ezt.
Kód:
# Ha VBA7, akkor Nyilvános deklarálja a PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) "64 bites rendszerekhez # Egyéb Nyilvános deklarálja az alvó alveszt Lib" kernel32 "(ByVal dwMilliseconds olyan hosszú)" 32 bites rendszerekhez
Példák az Excel VBA Wait Function használatára
Ezt a VBA Wait Excel sablont innen töltheti le - VBA Wait Excel sablont1. példa
Tegyük fel, hogy egy excel napközben, 14: 30: 00-kor dolgozik, és azt szeretné, hogy a kódja szüneteljen, amíg az idő 14:40:00 lesz. Használhatja az alábbi kódot.
Kód:
Sub Wait_Példa1 () Application.Wait "14:40:00" End Sub
A kód megakadályozza az excel működését, amíg az idő el nem éri az operációs rendszer 14:40:00 óráját. Az ilyen idő biztosítása veszélyes, mert nem mindig dolgozunk 14: 30-tól, az folyamatosan változik.
Tegyük fel, hogy amikor azt a kódot futtatja, amelyet 2 percig várni szeretne, hogyan utalhatja ezt a kódjára?
Tehát használhatjuk a VBA MOST funkciót IDŐÉRTÉK funkcióval a megadott idő megadásához az aktuális időponttól.
Csak emlékeztetni MOST () függvény visszaadja az aktuális dátumot és időt a számítógépes rendszerének megfelelően. A TIMEVALUE funkció 00:00:00 és 23:59:59, azaz 23:59:59 PM között 24 órás formátumban jeleníti meg az időt. A karakterlánc értékét időértékre konvertálja.
Például a NOW () + TIMEVALUE (00:02:30) azt jelenti, hogy az aktuális idő + 2 perc 30 mp.
Ha a jelenlegi idő 14:25:30, akkor 14:28:00 lesz.
A kód végrehajtásának leállításához vagy szüneteltetéséhez az aktuális időtől a következő 10 percig használhatja az alábbi kódot.
Kód:
Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub
Fontos, hogy a NOW () függvényt használja a pontos szüneteltetéshez, különben valószínű, hogy az Excel-munkafüzet éjfélig szünetel. A szünet módszerből azonban bármikor kijöhetünk az Esc vagy a Break gomb megnyomásával .
2. példa
Várjon 10 másodpercet minden alkalommal, amikor a hurok fut
A várakozási mód jól használható a hurkoknál. Vannak olyan helyzetek, amikor előfordulhat, hogy 10 másodpercet kell várni minden egyes ciklus futásakor. Nézze meg például az alábbi adatokat.
A Profit = (Értékesítés - Költség) kiszámításához hurkot szeretne létrehozni, és minden ciklus után 10 másodpercig várnia kell, hogy ellenőrizze, hogy az eredmény pontos-e vagy sem. Az alábbi kód ezt meg fogja tenni.
Kód:
Alvárás_Példa3 () Dim k egész szám k = 2 - 9 celláig (k, 4). Érték = cellák (k, 2) - cellák (k, 3) alkalmazás. Várjon (Most () + TimeValue ("00:00 : 10 ")) Következő k Vége Sub
Ez a kód soronként kiszámítja az eredmény oszlopot. Az első sor kitöltése után 10 másodpercet vár, mielőtt kiszámítja a következő sort.
VBA alvás vs VBA várakozás
VBA SLEEP | VBA VÁR | |
Ez nem egy VBA beépített funkció, ezért speciális kódra van szüksége a funkció eléréséhez. | Ez egy VBA beépített funkció, nem igényel külön kódot a funkció eléréséhez. | |
Az alvás ezredmásodperceket igényel. | A várakozáshoz rendszeres időkeret szükséges. | |
Ezredmásodpercek alatt késleltethetjük a kódot | Csak másodpercek alatt késhetünk. |