VBA-foutafhandeling

Excel VBA-foutafhandeling

In VBA wanneer we met codes werken, kunnen we veel verschillende soorten fouten tegenkomen en hoe deze fouten kunnen worden opgelost, staat bekend als foutafhandeling, nu kunnen er enkele fouten zijn gemaakt in de syntaxis die zelf uitblinkt, maar wanneer er een fout is die buiten het bereik valt of iets dat niet bestaat. Excel geeft ons een pop-up voor hetzelfde, het is belangrijk om te weten welke foutcode voor welke fout is om de fout in de code te identificeren.

In Excel VBA krijgen we tijdens het uitvoeren van een reeks codes een soort fouten. Sommige van deze fouten zijn syntaxisfouten, sommige zijn fouten die niet uitvoerbaar zijn. De syntaxisfout is wanneer gemaakt door de gebruiker door Excel zelf in rode kleur wordt gemarkeerd. Maar als er een ander soort runtime-fout is, hoe gaan we ermee om en hoe komen we verder dan dit, dan bespreken we in dit artikel.

Afgezien van syntaxisfouten, moeten de andere runtime-fouten worden afgehandeld tijdens het uitvoeren van een reeks codes. Laat me eerst een voorbeeld geven van hoe de andere runtime-fout optreedt. Bekijk de onderstaande code,

Dit is een voorbeeldcode die, wanneer uitgevoerd, zal retourneren wat is geschreven in de msgbox-functie. Maar zoals we kunnen zien, is er in de tweede regel van de code 4/0 wat niet mogelijk is in wiskundige termen, dus het zal een runtime-fout retourneren. Laten we de bovenstaande code uitvoeren en zien welke fout we zullen krijgen.

Dit is de fout die we krijgen tijdens het uitvoeren van de gegeven code. Hoe we deze fout nu aanpakken, wordt gedaan door Error Handling.

Er zijn twee methoden om fouten af ​​te handelen:

  1. Bij fout Ga naar, en
  2. Bij fout Volgende hervatten.

Uitleg

Zoals hierboven uitgelegd, krijgen we veel soorten fouten in VBA, sommige zijn syntaxis en sommige zijn runtime. Syntaxisfouten zijn al gemarkeerd in een rode kleur, zie bijvoorbeeld onder screenshot,

Terwijl de andere run-time fouten is. In principe zal Excel de volgende drie dingen doen: ofwel zal het een fout laten zien of die fout negeren, ofwel zal het een bepaalde set instructies tonen. Om dergelijke taken uit te voeren, moeten we instructies geven en dit wordt foutafhandeling genoemd.

Hoe om te gaan met fouten in VBA-code?

U kunt deze VBA Error Handling Excel-sjabloon hier downloaden - VBA Error Handling Excel-sjabloon

Voorbeeld 1

Laten we voor het eerste voorbeeld de eerste code nemen die we als demonstratie hebben genomen. In het bovenstaande voorbeeld hebben we gezien dat de code een runtime-fout geeft bij de tweede msgbox-functie.

Schrijf de volgende code na het openen van de subfunctie,

Code:

 Sub Sample () Bij fout Hervatten Volgende MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

Wanneer we nu de bovenstaande code uitvoeren, zien we dat de regel code met de fout niet wordt uitgevoerd. Excel slaat die regel over en gaat verder op de volgende regel.

Er is een andere methode om de fout af te handelen is vba Goto Statement, we bieden Excel een bestemming om naar toe te gaan wanneer het een fout vindt. In plaats van de vorige foutafhandelingscode, hebben we de volgende code ingevoegd,

Code:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

We geven Excel Az als bestemming om naartoe te gaan als er een fout wordt gevonden. Nu na de msgbox een andere code schrijven zoals hieronder,

Code:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Klaar: Sub afsluiten 

Nu moeten we de bestemming az definiëren als wat het moet doen als Excel een fout in de code vindt.

Code:

 Sub Sample () On Error GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Klaar: Exit Sub az: MsgBox "Dit is een fout" & Err.Description End Sub 

Wanneer we deze code nu uitvoeren, zien we het resultaat weergegeven.

Dit is het eerste msg box-resultaat en aangezien we weten dat we een fout hebben in de volgende regel van onze code, laten we eens kijken wat het resultaat is van Excel.

De foutbeschrijving hierboven in de code helpt ons om precies te laten zien wat de fout is opgetreden in onze code.

Voorbeeld # 2

We hebben geleerd om met fouten in onze codes om te gaan. Laten we eens kijken naar een ander voorbeeld van het omgaan met fouten. Beschouw de volgende code als ons tweede voorbeeld.

We hebben een enigszins vergelijkbare fout in voorbeeld 1. De fout staat op regel d = i / b. Nu zullen we deze fouten afhandelen door de twee hierboven beschreven methoden te gebruiken.

Schrijf de volgende code na het openen van de subfunctie,

Code:

 Sub Sample2 () On Error Resume Next bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub 

Wanneer we nu onze code uitvoeren, kunnen we zien dat deze de tweede regel negeert en alleen de waarde voor C weergeeft.

De bovenstaande foutafhandelaar was vervolgens een cv, nu zullen we de Ga naar gebruiken waarin we Excel een bestemming vertellen om naartoe te gaan als er een fout optreedt. Schrijf de volgende code op,

Code:

 Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d

De bx is een opgegeven bestemming wanneer er een fout optreedt nadat msgbox D de volgende code heeft genoteerd,

Code:

 Sub Sample2 () On Error GoTo bx Dim i As Integer, b As Integer, c As Integer, d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Sub afsluiten 

Now we need to define the destination Bx what it should do when it encounters an error, So write down the following code,

Code:

 Sub Sample2() On Error GoTo bx Dim i As Integer , b As Integer , c As Integer , d As Integer i = 2 b = 0 c = i + b MsgBox c d = i / b MsgBox d DOne: Exit Sub bx: MsgBox " This is another Error " & Err.Description End Sub 

Now when we execute the code we can see that excel first gives us the value for C.

Now in another step, it will give us the prompt we provided it when it encounters an error.

This is how we handle the normal runtime errors in Excel VBA.

Things to Remember

There are a few things we need to remember about Error Handling:

  1. On Error Resume Next Ignores the error.
  2. On Error GoTo Gives excel a destination when it encounters an error.
  3. The description is used to show the exact error occurred to the user.