VBA On Error Resume Next - Voorbeelden van VBA On Error Resume Next

Inhoudsopgave:

Anonim

Excel VBA On Error Resume Next

Foutafhandeling is een zeer nuttig en belangrijk mechanisme voor programmeertalen zoals VBA Foutcontrole of -preventie, wat een aspect is van foutafhandeling, wat betekent dat effectieve en belangrijke maatregelen in een VBA-script worden genomen om het optreden van een foutmelding te voorkomen. De instructie Excel VBA On Error Resume Next negeert de coderegel die een fout veroorzaakt en gaat door of leidt de uitvoering naar de volgende regel die volgt op de regel die de fout heeft veroorzaakt.

OPMERKING: bij de instructie Error Resume Next worden de runtime-fouten niet hersteld, maar een fout waarbij wordt genegeerd waar de uitvoering van het VB-programma wordt voortgezet vanaf de regel die de runtime-fout heeft veroorzaakt.

Kortom, bij fout hervatten wordt gebruikt als u de fout wilt negeren en door wilt gaan of de uitvoering van de code naar de volgende cel wilt hervatten.

Soorten fouten in VBA

Hieronder staan ​​de 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 foutopsporing & 'On Error'-verklaringen in een code. De Runtime Error kan worden voorkomen met behulp van On Error Resume Next.

VBA-runtimefout:

Vóór de uitleg van On Error Resume Next, moet u zich bewust zijn van de runtime-fout wanneer er geen wiskundige verklaringen of termen in een instructie aanwezig zijn, dan treedt deze runtime-fout op.

Voorbeelden van Excel VBA On Error Resume Next

Hieronder staan ​​de verschillende voorbeelden van On Error Resume Next in Excel VBA:

U kunt deze VBA On Error Resume Next Excel Template hier downloaden - VBA On Error Resume Next Excel Template

VBA On Error Resume Next - Voorbeeld # 1

Hier wordt een fout genegeerd en gaat de uitvoering van de code door. 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 wordt ingevoerd bovenaan de code na de SUB-instructie, negeert het de runtime-fout en gaat het door naar de volgende instructie, resulteert dit in een uitvoer van 6/2 (Pop-upberichtvak met het resultaat).

Code:

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

VBA On Error Resume Next - Voorbeeld # 2

Ik kan On Error Resume Next overal in de code van het begin tot het einde gebruiken. In het onderstaande voorbeeld moet ik een 3-berekening maken, dwz

9/3 =?

9/0 =?

9/2 =?

In het bovengenoemde voorbeeld kunt u een tweede berekening waarnemen waarbij een willekeurig nummer niet door nul kan worden gedeeld, dwz dat 9 in de tweede stap niet door nul kan worden gedeeld. Stel dat u de macro uitvoert zonder de instructie On Error Resume Next in te voeren, nu kan ik de code stap voor stap uitvoeren met behulp van stap in of F8 om te begrijpen hoe het werkt.

Nu voer ik de bovenstaande code uit, door stap voor stap vaak op stap In optie of F8-toets te klikken. Ik kopieer de bovenstaande code en begin deze stap voor stap uit te voeren, want de eerste stap van de berekening verschijnt in tekstvak 3.

Code:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Wanneer ik de tweede coderegel voer, treedt de onderstaande runtime-fout op bij de tweede stap van een code, waarbij een willekeurig nummer niet door nul kan worden gedeeld, dwz 9 kan niet door nul worden gedeeld in de tweede stap.

Code:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Als ik nu zelfs op debug klik, kan het niet verder, waar het me naar de tweede coderegel brengt (het wordt gemarkeerd in gele kleur), waar ik de correctie moet uitvoeren. Dus, hier, als u verder op Stap in optie of F8-toets klikt, wordt de derde berekening in deze code niet uitgevoerd.

Om deze runtime-fout te corrigeren of af te handelen, moet ik de instructie OnError Resume Next boven een tweede code of aan het begin van de code onder het substatement gebruiken of uitvoeren. zodat het die regel code overslaat en naar de derde codestap gaat en de waarde berekent.

Code:

 Sub RUNTIME_30 () MsgBox 9/3 bij fout Hervatten Volgende MsgBox 9/0 MsgBox 9/2 End Sub 

OF

 Sub RUNTIME_31 () Bij fout Hervatten Volgende MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Nu heb ik bij fout hervatten volgende instructie toegevoegd aan de code, waar je een van de bovenstaande code kunt gebruiken, als je het stap voor stap uitvoert, krijg je een pop-up met twee berichten, een is de uitvoer eerste code en de derde code berekening. On Error Resume Next negeert de runtime-fout in de tweede code en gaat door naar de derde code.

VBA On Error Resume Next - Voorbeeld # 2

We zien nu de combinatie van On Error Resume Next met Error GoTo 0. In de onderstaande code worden fouten genegeerd totdat de On Error GoTo 0- instructie wordt 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.

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 

Wanneer ik de bovenstaande code uitvoert, wordt de delingsfout weergegeven, dwz Type komt niet overeen (numerieke waarde kan niet door tekst worden gedeeld).

Nu kunt u uw werkmap opslaan als een "Excel-macro-werkmap". Door te klikken op opslaan als in de linkerhoek van het werkblad.

Wanneer u dit Excel-bestand opnieuw opent, kunt u de onderstaande sneltoets gebruiken, bijv.

Functie + Alt + F11 sneltoets helpt u toegang te krijgen tot alle gemaakte macro-code van de werkmap. Functie + Alt + F8 sneltoets helpt u een dialoogvenster "Macro" te openen, dat alle macronamen bevat, waar u een specifieke macrocode naar keuze kunt uitvoeren.

Dingen om te onthouden

  • Runtime-fout wordt stil gevangen en opgeslagen in het globale Err-object
  • On Error Resume Next voorkomt meestal een onderbreking in de uitvoering van de code.
  • Foutobjecteigenschappen (Err Object) worden automatisch gewist wanneer Resume Next wordt gebruikt in een foutafhandelingsroutine

Aanbevolen artikelen

Dit is een gids voor VBA On Error Resume Next. Hier bespreken we verschillende soorten fouten in VBA Excel, samen met enkele praktische voorbeelden en een downloadbare Excel-sjabloon. U kunt ook onze andere voorgestelde artikelen doornemen -

  1. Volledige gids voor VBA-macro's
  2. VBA DateDiff (voorbeelden met Excel-sjabloon)
  3. Hoe doelzoeking te gebruiken in VBA?
  4. VBA-beveiligingsblad met syntaxis
  5. VBA Environ