Excel VBA Foutafhandeling

Foutafhandeling is een zeer nuttig en belangrijk mechanisme voor programmeertalen zoals VBA. Foutcontrole of -preventie is een aspect van foutafhandeling, wat inhoudt dat effectieve en significante maatregelen in een VBA-script worden genomen om te voorkomen dat er een foutmelding verschijnt

Verschillende soorten fouten in VBA

  1. Syntaxisfout of parseringsfout
  2. Compileer- of compilatiefout
  3. Runtime Error
  4. Logische fout

De bovenstaande fouten kunnen worden verholpen met behulp van de onderstaande foutopsporing en verschillende 'On Error'-verklaringen die tussen een code worden ingevoegd.

On Error Resume Next

Bij fout Ga naar 0

Bij fout Ga naar

Bij fout Ga naar -1

VBA-foutafhandeling met behulp van verschillende 'ON ERROR'-verklaringen

U kunt deze VBA-foutafhandeling Excel-sjabloon hier downloaden - VBA-foutafhandeling Excel-sjabloon

Voorbeeld # 1 - VBA-compilatiefouten

Wanneer er een fout is in een verklaring of syntaxis van VBA-code, wanneer u per ongeluk een code verkeerd typt, wordt deze in rode kleur gemarkeerd, afhankelijk van de instellingsopties in hulpmiddelen (als u Auto syntaxiscontrole hebt geselecteerd).

Er verschijnt een pop-upvenster met compileerfout wanneer u de code uitvoert met een onjuiste syntaxis.

Code:

 Sub SYNTAX_ERROR () MsgBox dit is mijn eerste programma End Sub 

"COMPILE ERROR: VARIABLE NOT DEFINED" is de meest voorkomende fout die als een pop-upbericht verschijnt. wanneer de verwijzende variabele niet is gedefinieerd, treedt deze fout op.

Code:

 Sub VBA_FORMAT1 () A = 19049.83 A = Formaat (A, "STANDAARD") MsgBox A End Sub 

In het bovenstaande voorbeeld heb ik het variabeletype daarom niet als String aangegeven, deze fout treedt op. Dus moet ik een variabele declareren als Dim A als String.

Code:

 Sub VBA_FORMAT1 () Dim A als String A = 19049.83 A = Formaat (A, "STANDAARD") MsgBox A End Sub 

Voorbeeld # 2 - VBA-runtimefout

Wanneer onmogelijke wiskundige verklaringen of termen in een verklaring voorkomen, treedt deze runtime-fout op.

Code:

 Sub RUNTIME_1 () MsgBox 6/0 Einde Sub 

Voorbeeld # 3 - VBA-logische fouten of bugs

Deze fouten zijn erg moeilijk te traceren, ze worden niet gemarkeerd en er verschijnt geen pop-up foutmelding. het zal leiden tot onverwachte acties en incorrecte resultaten.

Voorbeeld: wanneer twee variabelen in code aanwezig zijn, kan deze een onjuiste bevatten. In dit geval treedt een logische fout op.

Hoe fouten in VBA te voorkomen?

Laten we eens kijken hoe we de bovenstaande verschillende soorten fouten in VBA Excel kunnen voorkomen.

Stap 1: Om een ​​VB Editor-venster te openen Selecteer of klik op Visual Basic in de groep Code op het tabblad Ontwikkelaars of u kunt direct klikken op de sneltoets Alt + F11 .

Stap 2: Om een ​​lege module te maken, klikt u onder de Microsoft Excel-objecten met de rechtermuisknop op blad 1 (VB_ERROR HANDLING) & voegt Module in zodat een nieuwe lege module wordt gemaakt.

VBA-foutafhandeling met foutopsporingsoptie

Het is beter om code te compileren voordat we deze uitvoeren. Om compilatie te volgen, moeten de onderstaande stappen worden gevolgd. Op de werkbalk van het VB-menu moeten we onder de optie Debug een compileer VBA-project selecteren. Wanneer u erop klikt, wordt de code stap voor stap gecontroleerd. Zodra de fout is gevonden, wordt deze gemarkeerd en verschijnt er een pop-upbericht, zodat u deze moet corrigeren. zodra het is gecorrigeerd, moet u compileren om de volgende fout in de code te vinden.

Opmerking: Met behulp van de compileeroptie kunnen we alleen de compileer- en syntaxisfout herstellen.

VBA-foutafhandeling met behulp van verschillende 'ON ERROR'-verklaringen

1. Bij fout Hervatten Volgende

Hier wordt de fout genegeerd en gaat de code verder.

In het onderstaande voorbeeld kan 6 niet door nul worden gedeeld, als u het uitvoert zonder de instructie On Error Resume Next in te voeren, treedt de hieronder genoemde runtime-fout op.

Code:

 Sub RUNTIME_1 () MsgBox 6/0 Einde Sub 

Als On Error Resume Next bovenaan in de code wordt ingevoerd na de instructie Sub, negeert het de runtime-fout en gaat het door naar de volgende instructie, wat resulteert in de uitvoer van 6/2 of 3 (Pop-upberichtvak met het resultaat).

Code:

 Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub 

2. Bij Error GoTo 0 en Error GoTo -1

'Bij fout GoTo 0' stopt de code op de specifieke regel die de fout veroorzaakt en toont een berichtvenster dat de fout beschrijft of aangeeft.

Code:

 Sub onError_Go_to_0 () On Error GoTo 0 Kill "C: TempFile.exe" Bereik ("A1"). Waarde = 100 / "PETER" End Sub 

Meestal vertoont het standaard foutcontrolegedrag, het is belangrijk wanneer het samen met 'On Error Resume Next' wordt gebruikt.

Meestal kunt u het Runtime-foutbericht bekijken met de opties 'Doorgaan', 'Einde', 'Foutopsporing' en 'Help' . laten we het gebruik van elk van hen bekijken.

  • De optie Doorgaan negeert de uitzondering en gaat door met de code als dit mogelijk is.
  • De eindoptie beëindigt het programma.
  • Foutopsporingsoptie markeert de verklaring waar de fout is opgetreden. waarmee u de code kunt opsporen of corrigeren.
  • Met de optie Help gaat u naar de Help-pagina van Microsoft MSDN.

On Error Ga naar 0 met On Error Resume Next

Code:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Kill "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub 

In de bovenstaande code zal het fouten negeren totdat het On Error GoTo 0-statement bereikt. Na de instructie On Error GoTo 0, gaat de code terug of gaat u verder met de normale foutcontrole en wordt de verwachte fout geactiveerd. wanneer ik de bovenstaande code uitvoer, zal het de divisiefout weergeven, dwz type mismatch (numerieke waarde kan niet door tekst worden gedeeld).

Bij fout schakelt GoTo 0 alle trapping van fouten uit die momenteel in de VBA-code aanwezig zijn, dwz schakel de foutafhandeling in de hoofdcode uit, terwijl GoTo -1 bij fout de foutafhandeling wist en op niets instelt, wat u helpt of toestaat om een ​​nieuwe foutenval te maken.

3. Bij fout GoTo <LABEL

VBA om de programmabesturing over te dragen naar de regel gevolgd door het label als er runtime-fouten worden aangetroffen, dwz code springt naar het opgegeven label. Hier worden de codeverklaringen tussen de uitzonderingsregel en het label niet uitgevoerd.

Deze methode is geschikter en belangrijker om het programma netjes af te sluiten als er tijdens de uitvoering een grote fatale fout optreedt.

In de hieronder genoemde VBA-code zodra de fout optreedt op regel 3, draagt ​​het programma de besturing over naar het label van regel 6 (pop-upbericht verschijnt als "Uitzonderingshandler" ).

Code:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Deze regel wordt niet uitgevoerd" Exit Sub Error_handler: MsgBox "exception handler" End Sub 

Hier kunt u opmerken dat 'Exit Sub' moet worden gebruikt net vóór het label 'Error_handler:', dit wordt gedaan om ervoor te zorgen dat het codeblok Error-handler stopt of niet wordt uitgevoerd als er geen fout is opgetreden. Nu kunt u uw werkmap opslaan als een "Excel-macro-werkmap". Klik op opslaan als in de linkerhoek van het werkblad.

Nogmaals, als u een bestand opent, kunt u klikken op de sneltoets Fn + Alt + f8, het dialoogvenster "Macro" verschijnt, waar u een opgeslagen macrocode naar keuze kunt uitvoeren of u kunt op Fn + Alt + F11 klikken voor een volledig macrovenster.

Dingen om te onthouden

  • Voordat u code schrijft, moet u ervoor zorgen dat het breken van niet-verwerkte fouten is gecontroleerd of ten onrechte is geselecteerd. overvuloptie onder algemeen in de opties van de tool van de VBA-werkbalk.
  • Het is een standaardinstelling die helpt om uw code te stoppen voor fouten die niet worden verwerkt.
  • Break on All fouten: het stopt uw ​​code voor alle soorten fouten.
  • Break-in Class Module: In het geval dat een object zoals een gebruikersformulier in de code wordt gebruikt, zal dit aangeven dat de exacte regel die de fout veroorzaakt.

Aanbevolen artikelen

Dit is een handleiding voor het omgaan met VBA-fouten. Hier bespreken we hoe VBA Error Handling in Excel te gebruiken, samen met enkele praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -

  1. VBA Declare Array (voorbeelden)
  2. VBA bij fout
  3. VBA Unprotect Sheet
  4. VBA-kolommen | Excel-sjablonen
  5. VBA Environ

Categorie: