VBA bij fout GoTo

Excel VBA bij fout GoTo

Fouten zijn een essentieel onderdeel van elke coderingstaal en VBA-macro's verschillen hier niet van. Naar mijn mening is het vinden van waarom de fout optreedt 90% van de klus en 10% ligt in het oplossen van die fout. In elke codeertaal gebruiken codeerders hun eigen manier om fouten in hun codering af te handelen, zo gebruiken wij ook bij VBA-codering. Vaak moeten we de fout negeren of vaak willen we naar specifieke dingen gaan wanneer de fout optreedt. "On Error" is de instructie die we in VBA moeten gebruiken om fouten af ​​te handelen.

Deze verklaring heeft drie soorten verklaringen en hieronder staat de lijst.

  1. Bij fout ga naar 0
  2. Bij fout ga naar [label]
  3. Bij fout Volgende hervatten

In dit artikel zullen we zien hoe deze drie verklaringen worden gebruikt in VBA-codering om eventuele fouten op te lossen.

Hoe VBA On Error Statements te gebruiken?

U kunt deze VBA On Error GoTo Statement Template hier downloaden - VBA On Error GoTo Statement Template

# 1 - Bij fout hervatten Volgende

Zoals de instructie zelf zegt, betekent "On Error Resume Next" wanneer de fout optreedt in de code "hervat" de volgende regel van de code door de foutregelcode te negeren. Bekijk nu de onderstaande code.

In de onderstaande code heb ik de werkbladnamen genoemd en gevraagd om de waarde in de eerste cel in te voeren als "Fouttest".

Code:

 Sub On_Error_Resume_Next () Werkbladen ("Ws 1"). Selecteer bereik ("A1"). Waarde = "Fouttest" Werkbladen ("Ws 2"). Selecteer bereik ("A1"). Waarde = "Fouttest" Werkbladen ( "Ws 3"). Selecteer bereik ("A1"). Value = "Fouttest" werkbladen ("Ws 4"). Selecteer bereik ("A1"). Waarde = "Fouttest" End Sub 

Nu heb ik onderstaande werkbladen in mijn werkboek.

  • Ik zal de code uitvoeren en kijken wat er gebeurt.

  • We kregen de foutmelding "Subscript buiten bereik", klik op "Debug" om te zien in welke regel we de foutmelding kregen.

  • Dus in de regel "Werkbladen (" Ws 3 "). Selecteer" kregen we een foutmelding, dit is omdat er in onze werkmap geen werkblad staat met de naam "Ws 3", dus er is een fout opgetreden.

In dergelijke gevallen willen we de fout misschien negeren en de uitvoering van de code naar de volgende regel hervatten. Dit is waar onze fout-handler "On Error Resume Next" in beeld komt.

  • Het enige wat we hoeven te doen is de regel "On Error Resume Next" aan het begin van de macro toe te voegen.

Voer nu deze code uit en er wordt geen foutbericht weergegeven, want wanneer de code een fout tegenkomt, wordt de fout genegeerd en wordt de volgende regel met code hervat.

# 2 - Bij fout GoTo 0

Dit is geen foutbehandelaar, maar een activering van foutmeldingen nadat we het foutbericht hebben uitgeschakeld met behulp van de instructie "On Error Resume Next".

Als je de instructie "Resume Next" gebruikt, begint VBA-macro's elke fout te negeren die optreedt en gaat door met de volgende regel codes. Maar we willen niet dat dit altijd gebeurt, omdat we sommige fouten opzettelijk moeten negeren, terwijl we een melding nodig hebben.

Als een specifieke set code een fout in dat blok code genereert, hoeven we alleen de fout te negeren, andere delen van de code willen we de fout niet negeren.

  • Bekijk de onderstaande afbeelding voor het gebruik van de "On Error GoTo 0" -verklaring.

Dus nu zullen fouten worden genegeerd totdat de code de fout vindt, meld de activator "On Error GoTo 0". Zodra deze regel code de macro's weer normaal uitvoert en zoals gewoonlijk foutmeldingen begint te geven.

# 3 - Bij fout GoTo Label

We hebben gezien hoe u de fout kunt negeren en hoe u de foutmelding weer kunt inschakelen. Nu we deze methode gebruiken, kunnen we naar een specifieke regel code gaan.

Bij deze methode betekent "Label" dat we elke naam aan dit label kunnen geven en dat hetzelfde label ook op de vereiste regel code moet worden gegeven.

Kijk bijvoorbeeld naar dezelfde code uit het bovenstaande voorbeeld.

Laten we nu de code regel voor regel uitvoeren door op de functietoets F8 te drukken.

Nu zal de macro de foutafhandelingsinstructie lezen, druk op de F8-toets en voer de eerste 2 werkbladcode uit.

Nu staat de macro op het punt om de derde werkbladcode uit te voeren die niet in de werkmap staat, druk op de F8-toets en kijk wat er gebeurt.

Omdat de macro een fout heeft aangetroffen in de onderstaande coderegel, is het naar het fouthandlerlabel "ErrorMessage" gesprongen dat werd beschreven via de instructie "On Error GoTo [Label]".

Nu zal het berichtvenster het bericht tonen als "Fout opgetreden en macro afsluiten".

Dingen om te onthouden

  • VBA On Error GoTo 0 zal de foutmelding weer inschakelen, dus vergeet deze niet toe te voegen na het aanleveren van een error handler.
  • U moet er absoluut zeker van zijn in welk deel van de code u de fout wilt negeren, dus sluit de foutafhandelaar alleen voor dat codeblok in.