Excel VBA DoEvents-funktion
Ved hjælp af VBA DoEvents kan vi få koden til at køre i baggrunden og samtidig give os mulighed for at arbejde med excel og anden applikationssoftware. DoEvents giver os ikke kun mulighed for at arbejde med anden software, men vi kan også afbryde koden.
DoEvents-funktionen overfører kontrol til operativsystemet på den computer, vi arbejder på.

Hvordan bruges DoEvents-funktionen?
Der kræves en stor mængde VBA-kode, når kravet er stort. I disse tilfælde hænger Excel op og stopper i nogen tid, og endda undertiden reagerer det ikke.
Se f.eks. Nedenstående kode.
Kode:
Sub DoEvents_Example1 () Dim i så længe for i = 1 til 100000 interval ("A1"). Værdi = i Næste i Afslut sub

Ovenstående kode indsætter serienumre fra 1 til 100000. Det tager let mere end et minut at udføre opgaven. Under udførelsen hænger Excel i lang tid for at fuldføre opgaven. I løbet af denne periode viser excel meddelelsen som "Excel svarer ikke."

Desuden kan vi ikke få adgang til det regneark, vi arbejder på. Dette er en frustrerende ting, så hvordan gør vi Excel-regnearket til at være tilgængeligt til arbejde, mens koden kører bag skærmen.
Dette kan opnås ved at tilføje en VBA DoEvents-funktion .
Kode:
Sub DoEvents_Example1 () Dim i så længe for i = 1 til 100000 Range ("A1"). Værdi = i DoEvents Næste i End Sub

I det øjeblik vi tilføjer funktionen DoEvents i kode, kan vi få adgang til Excel-regnearket.

Fra ovenstående kan vi se, at koden kører, men vi kan få adgang til regnearket.
Afbryd koden, der kører
Når koden kører bag skærmen, kan vi tilføje rækker, kolonne og slette det samme, vi kan omdøbe arket, og vi kan også gøre mange andre ting. I det øjeblik vi tilføjer DoEvents, får det VBA-koden til at køre hurtigt og giver os mulighed for at falde for, at den nævnte opgave kører for sig selv.
- En af farerne ved DoEvents-funktionen er, når vi skifter regneark eller projektmapper, og den overskriver de aktive arkværdier.
- En anden fare er, hvis vi indtaster nogen værdi til cellen, stopper kodeudførelsen, og den underretter os ikke engang.