VBA bij fout GoTo - Typen foutverklaringen in VBA

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 90% van de klus geklaard om te achterhalen waarom de fout optreedt, 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, net als wij gebruiken 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. On Error Goto (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?

# 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 de 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 ") .Selecteren" kregen we een foutmelding. Dit komt omdat er in onze werkmap geen werkblad met de naam "Ws 3" is, dus er is een fout opgetreden.

In dergelijke gevallen willen we de fout misschien negeren en de uitvoering van de code op de volgende regel hervatten. Dit is waar onze "On Error Resume Next" error handler 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 als de code een fout tegenkomt, wordt de fout genegeerd en doorgegaan naar de volgende regel code.

# 2 - Bij fout GoTo 0

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

Als je de "Resume Next" -instructie gebruikt, beginnen VBA-macro's elke soort fout te negeren die optreedt en gaan ze door met de volgende regel met 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 codeblok genereert, hoeven we alleen fouten in andere delen van de code te negeren. We willen 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 enabler "On Error GoTo 0" zodra deze regel code 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 hetzelfde label moet ook op de vereiste regel code 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 foutafhandelingsverklaring lezen; druk op de F8-toets om de eerste 2 werkbladcode uit te voeren.

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 weergeven 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.

Interessante artikelen...