VBA bij fout Ga naar 0

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 fouten af ​​te handelen, moeten we beginnen met de verklaring "On Error Resume Next" en om deze foutafhandelaar te beëindigen, moeten we de verklaring "On Error GoTo 0" gebruiken.

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

Hoe gebruik ik On Error GoTo 0 Statement?

U kunt deze VBA On Error Goto 0 Excel-sjabloon hier downloaden - VBA On Error Goto 0 Excel-sjabloon

Kijk voor een voorbeeld 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 onderstaande bladen in mijn werkboek.

Er zijn geen bladen met de naam "Blad1" en "Blad2", wanneer we de code uitvoeren, zal er een fout optreden zoals hieronder.

Aangezien er geen blad is met de naam "Blad1", is er een foutmelding "Subscript buiten bereik" opgetreden. Om deze fout af te handelen, zal ik een foutafhandelingsinstructie "On Error Resume Next" bovenaan de macro 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 voor hoeveel regels we deze fout moeten negeren.

In dit voorbeeld hoeven we alleen de fout voor het eerste werkblad te negeren, maar voor het tweede werkblad moeten we de fout laten optreden als er geen werkblad "Blad2" is. Dus na de eerste werkbladcode voegt de fout de regel On Error GoTo 0 uit.

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 zal de error handler worden ingeschakeld.

Elke fout die zich nu voordoet, wordt genegeerd totdat de foutafhandelaar 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 Blad1 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, welk werkblad dan ook 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 met code “ On Error GoTo 0 ”, door op de F8-toets te drukken wordt deze lijntaak uitgevoerd.

Aangezien "On Error GoTo 0" wordt uitgevoerd, is 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 fouthandler na het verlaten van de subprocedure uitgeschakeld.