VBA bij fout Ga naar 0 - Hoe te gebruiken bij fout GoTo 0 in Excel VBA?

Excel VBA bij fout Ga naar 0

VBA On Error GoTo 0 is een fout-handler-instructie die wordt gebruikt om de ingeschakelde fout-handler in de procedure uit te schakelen. Het wordt "Error Handler Disabler" genoemd.

Foutafhandeling in een van de programmeertalen is een masterclass die alle codeerders moeten begrijpen. VBA-programmeertaal ook, en we hebben ook foutafhandelingstechnieken in deze programmeertaal. "On Error Resume Next" schakelt de error-handler in en "On Error GoTo 0" schakelt de ingeschakelde fout-handler uit.

Zowel "On Error Resume Next" als "On Error GoTo 0" zijn paren die samen moeten worden gebruikt voor de efficiëntie van de code. Om de fout af te handelen, moeten we beginnen met de verklaring "On Error Resume Next" en deze foutafhandelaar beëindigen. We moeten de instructie "On Error GoTo 0" gebruiken.

Elke regelcode die tussen deze instructies wordt geschreven, negeert elke soort fout die tijdens de procedure is opgetreden.

Hoe gebruik ik On Error GoTo 0 Statement?

Kijk bijvoorbeeld naar de onderstaande code.

Code:

Sub On_ErrorExample1 () Werkbladen ("Blad1"). Selecteer bereik ("A1"). Waarde = 100 werkbladen ("Blad2"). Selecteer bereik ("A1"). Waarde = 100 End Sub

Wat de bovenstaande code doet, is dat het eerst het werkblad met de naam "Blad1" selecteert en in cel A1 de waarde 100 invoegt.

Code:

Werkbladen ("Blad1"). Selecteer Bereik ("A1"). Waarde = 100

Vervolgens selecteert het het werkblad met de naam "Blad2" en voegt dezelfde waarde in.

Code:

Werkbladen ("Blad2"). Selecteer Bereik ("A1"). Waarde = 100

Nu heb ik de onderstaande bladen in mijn werkboek.

Er zijn geen bladen met de naam "Blad1" en "Blad2". Wanneer we de code uitvoeren, zal deze een fout tegenkomen zoals hieronder.

Aangezien er geen blad is met de naam "Blad1", is er een fout "Subscript buiten bereik" opgetreden. Om deze fout af te handelen, zal ik bovenaan de macro een foutafhandelingsinstructie "On Error Resume Next" toevoegen.

Code:

Sub On_ErrorExample1 () Bij fout Hervat volgende werkbladen ("Blad1"). Selecteer bereik ("A1"). Waarde = 100 werkbladen ("Blad2"). Selecteer bereik ("A1"). Waarde = 100 End Sub

Voer nu de code uit en kijk wat er gebeurt.

Het geeft geen foutmeldingen omdat de foutafhandelingsinstructie On Error Resume Next is ingeschakeld.

Stel je het scenario voor waarin we de fout moeten negeren in geval van niet-beschikbaarheid van het werkblad "Blad1", maar we moeten op de hoogte stellen als er geen werkblad met de naam "Blad2" is.

Omdat we On Error Resume Next bovenaan hebben toegevoegd , is het begonnen met het afhandelen van de fout, maar tegelijkertijd moeten we specificeren hoeveel regels we nodig hebben om deze fout te negeren.

In dit voorbeeld hoeven we alleen de fout voor het eerste werkblad te negeren, maar voor het tweede blad en verder. De fout moet optreden als er geen werkblad "Blad2" is. Dus na de eerste werkbladcode voegt de foutregel de regel On Error GoTo 0 toe.

Code:

Sub On_ErrorExample1 () Bij fout Hervat volgende werkbladen ("Blad1"). Selecteer bereik ("A1"). Waarde = 100 Bij fout Ga naar 0 werkbladen ("Blad2"). Selecteer bereik ("A1"). Waarde = 100 End Sub

Voer nu de code regel voor regel uit om de impact te zien door op de F8-toets te drukken.

Als u nu op de F8-toets drukt, springt de uitvoering van de code naar de volgende regel en wordt de actieve regeltaak uitgevoerd. Nu is de actieve regel (geel-gekleurde lijn) "On Error Resume Next" error handler, en de error handler zal worden ingeschakeld.

Nu treedt elke fout op. Het wordt genegeerd totdat het de fouthandler uitvoert die de code " On Error GoTo 0 " -instructie uitschakelt .

Bij de vorige poging zijn we fouten tegengekomen, maar druk nog een keer op de F8-toets en zie de magie.

Zonder enige vorm van fout op te geven, heeft het de uitvoering van de code hervat, ook al is er geen werkblad "Blad2" om te selecteren. Druk nu opnieuw op F8.

Omdat er geen Sheet1 was, kan het de waarde in de A1-cel niet invoegen als 500, maar wat het doet, is dat het de waarde van 500 invoegt in cel A1, ongeacht welk werkblad actief is. Mijn actieve blad toen ik de code uitvoer was "Blad3", dus de waarde van 100 wordt ingevoegd in cel A1.

Nu is de actieve regel code " On Error GoTo 0 " door op de F8-toets te drukken. Deze lijntaak wordt uitgevoerd.

Aangezien "On Error GoTo 0" wordt uitgevoerd, heeft het het proces van foutafhandeling gestopt en begint het opnieuw fouten te vertonen als die zich voordoen. Druk op de F8-toets en zie de fout.

In het vorige geval zonder On Error GoTo 0, heeft het deze fout ook genegeerd, maar sinds we een foutafhandelaar hebben toegevoegd, begint het de fout opnieuw te tonen.

Dingen om hier te onthouden

  • Zowel On Error Resume Next als On Error GoTo 0 moeten worden gebruikt als " Error Handler Enabler " en " Error Handler Disabler ".
  • Elke regel met codes tussen deze twee instructies stuit op een fout en zal worden genegeerd.
  • Als er een On Error GoTo 0-instructie is, wordt de foutafhandelaar na het afsluiten van de subprocedure uitgeschakeld.

Interessante artikelen...