Excel VBA DoEvents-functie

Wanneer we enorme codes schrijven, vallen we altijd in de val van VBA. Wanneer de code groot is, neemt VBA zijn eigen tijd om het lopende en uitvoerende proces te voltooien. Dat kan een minuut tot enkele minuten duren. Dit is het tijdsbestek waarin iedereen geïrriteerd raakt. En we kunnen niets anders doen in deze periode. Maar om dit te voorkomen, hebben we een functie in VBA genaamd DoEvents. Met behulp van DoEvents kunnen we de code op de achtergrond uitvoeren en tegelijkertijd kunnen we ook andere soorten dingen doen. We kunnen niet alleen aan andere tools of software werken, maar we kunnen ook de code onderbreken of stoppen tussen het uitvoeringsproces.

Nadat we DoEvents in de code hebben ingevoerd, hebben we naast VBA ook de controle over het werk dat we willen doen. Het mooie van DoEvents is dat het geen syntaxis heeft om te schrijven. We kunnen Doevents rechtstreeks plaatsen waar we de controle over VBA willen overnemen en de taken volgens onze behoefte uitvoeren.

Hoe de functie DoEvents te gebruiken in Excel VBA?

Hieronder staan ​​de verschillende voorbeelden om de functie DoEvents te gebruiken bij het excelleren met behulp van VBA-code.

U kunt deze VBA DoEvents Excel-sjabloon hier downloaden - VBA DoEvents Excel-sjabloon

Excel VBA DoEvents - Voorbeeld # 1

Hoewel we DoEvents moeten uitvoeren, hebben we een enorme set gegevens nodig waarin we kunnen zien hoe de code wordt onderbroken. We zullen dus een lus gebruiken, waar de nummers worden toegepast totdat de code is voltooid. Volg hiervoor de onderstaande stappen:

Stap 1: Open een module in VBA vanaf het menutabblad Invoegen zoals hieronder wordt weergegeven.

Stap 2: Schrijf de subprocedure van VBA DoEvents of we kunnen elke naam kiezen om de code te definiëren volgens onze behoefte.

Code:

 Sub VBA_DoEvents () Einde Sub 

Stap 3: Definieer nu een variabele in een willekeurige naam met gegevenstypen Lang. Het doel van het beschouwen van het gegevenstype als Lang is omdat we elke gewenste lengte van gegevens zullen nemen die niet mogelijk is als we Integer beschouwen.

Code:

 Sub VBA_DoEvents () Dim A As Long End Sub 

Stap 4: Open nu een For-Next-lus waar we de voorwaarden zullen plaatsen.

Code:

 Sub VBA_DoEvents () Dim A zo lang voor volgende A einde Sub 

Stap 5: Overweeg het bereik van een aantal van uw keuze dat kan worden geïmplementeerd. Hier nemen we het bereik 1 tot 2000 in gedefinieerde variabele A.

Code:

 Sub VBA_DoEvents () Dim A zo lang voor A = 1 tot 20000 Volgende A End Sub 

Stap 6: Zodra we het bereik van getallen definiëren, selecteren we het cellenbereik waar we de wijzigingen in getallen zien die we hierboven hebben gekozen. Laten we zeggen dat het cellenbereik A1 tot A5 is. Dit kan ook een enkele cel zijn.

Code:

 Sub VBA_DoEvents () Dim A zo lang voor A = 1 tot 20000 bereik ("A1: A5"). Waarde = A Volgende A Einde Sub 

Stap 7: Voer nu de code uit door te klikken op de knop Afspelen onder de menubalk.

We zullen zien dat de code is voltooid door de nummers van 1 tot 20000 af te drukken, maar we konden het niet stoppen.

Stap 8: Om volledige controle over de code te krijgen, past u DoEvents toe na de lusvoorwaarden zoals hieronder getoond.

Code:

 Sub VBA_DoEvents () Dim A zo lang voor A = 1 tot 20000 bereik ("A1: A5"). Waarde = A DoEvents Volgende A End Sub 

Stap 9: Voer de code nu opnieuw uit. En op dit moment proberen we de code te stoppen door op de stopknop te klikken, we zullen merken dat de code tussen de processen wordt gestopt voordat de proef van 20000 wordt voltooid.

Excel VBA DoEvents - Voorbeeld # 2

Er is een ander type proces voor het implementeren van DoEvents. Maar ook hiervoor hebben we enorme code nodig, zoals te zien is in voorbeeld-1. Volg hiervoor de onderstaande stappen:

Stap 1: Schrijf de subprocedure van VBA DoEvents zoals hieronder weergegeven.

Code:

 Sub VBA_DoEvents2 () Einde Sub 

Stap 2: Open direct een For-next-lus zonder een variabele te definiëren.

Code:

 Sub VBA_DoEvents2 () Voor volgende einde Sub 

Stap 3: Kies een nummerbereik dat we zullen zien lopen. Laat het bereik 1 tot 20000 hetzelfde zijn als voorbeeld-1.

Code:

 Sub VBA_DoEvents2 () Voor A = 1 tot 20000 Volgende einde Sub 

Stap 4: Zet nu direct elk werk voor uitvoer, laten we zeggen dat de uitvoer is zoals hieronder getoond. En het waardebereik zal +1 van de werkelijke waarde zijn.

Code:

 Sub VBA_DoEvents2 () Voor A = 1 tot 20000 Uitgang = Uitgang + 1 Volgende einde Sub 

Stap 5: Selecteer nu het bereik waar we de uitvoer willen zien. Laat de cel A1 zijn.

Code:

 Sub VBA_DoEvents2 () Voor A = 1 tot 20000 Uitgang = Uitgang + 1 Bereik ("A1"). Waarde = Uitgang Volgende Einde Sub 

Stap 6: En ten slotte zullen we DoEvents aan het einde van de For-lus plaatsen.

Code:

 Sub VBA_DoEvents2 () Voor A = 1 tot 20000 Uitgang = Uitgang + 1 Bereik ("A1") Waarde = Uitgang DoEvents Volgende Einde Sub 

Stap 7: Voer vervolgens de code uit door op F5 te drukken. We zullen zien, we kunnen alles doen, zelfs als de code actief is. Voor de demonstratie heb ik de cellen B1 en C1 geselecteerd. De cijfers bereikten alleen 4348, wat aanzienlijk minder is dan de limiet die we hebben ingesteld.

Stap 8: Als we de DoEvents verwijderen en de code uitvoeren, kunnen we niets doen totdat de code het proces heeft voltooid. Laten we dat ook zien.

Code:

 Sub VBA_DoEvents2 () Voor A = 1 tot 20000 Uitgang = Uitgang + 1 Bereik ("A1"). Waarde = Uitgang Volgende Einde Sub 

Stap 9: Voer de code nu opnieuw uit. Zoals we kunnen zien, stopte de code niet terwijl we op Stop probeerden te klikken. En de Play-functie stond nog AAN.

Voors en tegens van Excel VBA DoEvents

  • We kunnen op elk hulpmiddel of bestand op de achtergrond werken terwijl de VBA-code parallel wordt uitgevoerd.
  • Het gebruik van DoEvents belet ons niet het werk te doen dat we willen wanneer de code wordt uitgevoerd.
  • Het overschrijft het werkblad of de werkmap wanneer we schakelen tussen de verschillende werkbladen of werkmap.
  • De code stopt wanneer we de cel een momentje schrijven of wijzigen en we krijgen geen melding.

Dingen om te onthouden

  • Als we iets doen zonder DoEvents toe te passen, is er een grote mogelijkheid dat de code het systeem en het bestand bevriest. En dat we de bestanden zullen hervatten zodra de code volledig is uitgevoerd of het bestand crasht bij meerdere klikken.
  • We kunnen de verandering in het proces zien terwijl we tegelijkertijd aan het andere werk werken.
  • Nadat we de code hebben voltooid, slaat u het bestand op in een excell-indeling met macro om te voorkomen dat u code verliest.
  • Probeer de code toe te passen in een enorme en grote set codering, daar zullen we de daadwerkelijke implementatie en het gebruik zien.

Aanbevolen artikelen

Dit is een handleiding voor VBA DoEvents. Hier bespreken we hoe de DoEvents-functie in Excel te gebruiken met behulp van VBA-code, samen met praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -

  1. Hoe StrConv te gebruiken in Excel VBA?
  2. Nummers converteren naar tekst in Excel (voorbeelden)
  3. VBA ByRef-functie (voorbeelden met Excel-sjabloon)
  4. Excel-SOMMEN met datums | Excel-sjabloon

Categorie: