Ez az oktatóanyag bemutatja, hogyan lehet szüneteltetni / késleltetni a kódot a VBA Várakozás és Alvás funkcióival.
Amikor nagyméretű VBA programokat hozunk létre, amelyek sok számítást végeznek, vagy esetleg külső programot hívnak futtatásra, előfordulhat, hogy megköveteljük, hogy a VBA kódunk meghatározott időre leálljon, amíg a külső folyamat zajlik. Ennek eléréséhez a VBA számos módszert kínál.
Alkalmazás használata. Várjon módszer
Ha a következő lépés végrehajtása előtt szüneteltetnünk kell makrónk futását, vagy amíg el nem éri a megadott időt, használhatjuk a Alkalmazás. Várjon módszer. Ez például akkor lehet hasznos, ha automatizáltuk a bejelentkezési folyamatot egy webhelyre, és várnunk kell néhány másodpercet, amíg az oldal betöltődik, mielőtt a makró tovább futna.
Várjon 1 másodpercet
Ha ezt a sort beilleszti a makróba, akkor futása körülbelül 1 másodpercre szünetel:
1 | Application.Wait (Most + TimeValue ("0:00:01")) |
Várj amíg
Bizonyos esetekben meg kell várnia egy bizonyos időpontot. Ezzel a sorral a makró nem indul 9 óra előtt:
1 | Alkalmazás. Várjon "09:00:00" |
Kérjük, vegye figyelembe, hogy a Alkalmazás. Várjon nem fogadja el az 1 másodpercnél rövidebb késéseket.
VBA programozás | A kódgenerátor működik az Ön számára!
Alvási módszer alkalmazása
Ha pontosabb módra van szüksége a makró szüneteltetéséhez, használhatja az Alvás módszert.
Az alvás egy Windows API funkció, vagyis nem része a VBA -nak. Egy speciális nyilatkozat használatával érhető el.
Ha a Microsoft Office 64 bites verzióját használja, akkor az alábbi utasítást beszúrhatja egy új modulba vagy annak a modulnak az elejére (nem közvetlenül az alprogramba), amelyben használni szeretné az Alvó funkciót:
1 | Nyilvános nyilatkozat PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr) |
32 bites verzió esetén használja ezt a sort:
1 | Nyilvános nyilatkozat az alvó alvó állapotról "kernel32" (ByVal Milliseconds As LongPtr) |
Az Alvás funkció deklarálása után az alábbi alprogramokban fér hozzá:
1 | Aludj 10 000 |
Ezzel a sorral a makró 10 000 milliszekundumra, azaz 10 másodpercre szünetel.
Loop használata eseményekkel
A Várakozás és Alvás módszerek használatának nagy hátránya, hogy a felhasználó a makró folytatására várva nem tehet semmit az Excelben. A felhasználó azt gondolhatja, hogy az Excel nem válaszolt, és a felhasználó ezután használhatja Ctl+szünet hogy megszakítsa a makrót, ez legyőzi azt a célt, hogy kezdetben szünetet helyezzen a makróba.
Ennek a problémának a kiküszöbölésére használhatunk hurkot a DoEvents nevű módszerrel.
1234567 | Nyilvános alvizsgálat ()Dim i As LongI = 1 és 20000 közöttTartomány („A1”). Érték = iDoEventsKövetkező iEnd Sub |
Most, amíg az Excel futtatja a fenti makrót, a felhasználó folytathatja az Excel -sel való interakciót - például lapokat cserélhetünk vagy cellákat formázhatunk - alapvetően a makró továbbra is fut, de az Excel képernyő nincs lefagyva. Hasonló ciklus segítségével létrehozhatunk egy időzítő funkciót az Excelben, és beépíthetjük a DoEvents módszer, amellyel feloldhatja a képernyőt, amikor az időzítő fut.