VBA On Error Hervat volgende of Ga naar 0

Deze tutorial legt de VBA On Error Resume Next en Goto Statement uit.

Zelfs als je code perfect is opgebouwd, doet de gebruiker misschien niet wat je zou verwachten. Om deze reden moet u Error handlers in uw code invoegen wanneer er een reden is dat er een fout kan optreden.

Bij fout Hervatten volgende

De instructie On Error Resume Next vertelt VBA om alle coderegels die fouten bevatten over te slaan en door te gaan naar de volgende regel. VBA negeert de regel of regels met een fout erin en gaat naar de volgende regel code.

Dit is handig wanneer de regel code die kan worden genegeerd, niet essentieel is voor het succesvol uitvoeren van de macro, maar behoorlijk gevaarlijk kan zijn als deze verkeerd wordt gebruikt, omdat dit onbedoelde resultaten kan opleveren.

Bijvoorbeeld in de onderstaande procedure:

123456 SubHideAllSheets()Dim ws als werkbladFor Each ws In ActiveWorkbook.Sheetsws.Visible = FalseVolgende wsEinde sub

Als we deze code uitvoeren, krijgen we een foutmelding omdat we niet alle werkbladen in een werkmap kunnen verbergen - er moet minimaal één werkmap zichtbaar blijven.

Als we de procedure echter wijzigen zoals hieronder weergegeven, gaat de code verder dan de fout en blijft het laatste blad in de werkmap zichtbaar.

1234567 SubHideAllSheets()Bij fout Hervatten volgendeDim ws als werkbladFor Each ws In ActiveWorkbook.Sheetsws.Visible = FalseVolgende wsEinde sub

Bij fout Ga naar 0

Als we geen foutafhandelaar in onze code hebben, Bij fout Ga naar 0 is de standaardinstelling van Excel. Dit betekent in feite dat wanneer er een fout optreedt met: Bij fout Ga naar 0, zal VBA stoppen met het uitvoeren van code en het standaard foutberichtvenster weergeven, bijvoorbeeld:

Als we een foutenval hebben geplaatst zoals Bij fout Hervatten volgende in onze code, maar als we de fout opnieuw willen instellen naar de standaard, kunnen we een . invoegen Bij fout Ga naar 0 regel in onze code.

12345678910 SubfoutGoTo0()Bij fout Hervatten volgendeDim ws als werkbladFor Each ws In ActiveWorkbook.Sheetsws.Visible = FalseVolgende wsBij fout Ga naar 0'Voer hier bijvoorbeeld meer code uit:ActiveSheet.Name = "Blad1"Einde sub

Als er nu een fout in onze code zou zijn na de Bij fout Ga naar 0 lijn, zou het standaardfoutbericht voor Excel optreden. In dit voorbeeld hebben we al een blad met de naam Blad1 in de ActiveWorkbook als de code boven de Bij fout Ga naar 0 verbergt het blad, maar verwijdert het niet. Het standaard Excel-foutbericht dat aangeeft dat de bladnaam al in gebruik is, wordt dan weergegeven.

Bij fout Ga naar Lijn

We kunnen onze code ook dwingen om naar een andere regel code te gaan met behulp van de Bij fout Ga naar Lijn die VBA vertelt om naar een specifieke coderegel te gaan als er een fout optreedt.

123456789101112 SubfoutGoToLine()Bij fout Hervatten volgendeDim ws als werkbladFor Each ws In ActiveWorkbook.Sheetsws.Visible = FalseVolgende wsBij fout Ga naar errhandlerActiveSheet.Name = "Blad1"Sluit subdwalen:MsgBox("Er is al een blad met de naam blad1!", vbCritical)Einde sub

In het bovenstaande voorbeeld, wanneer de code het blad "Blad1" vindt, wordt het verplaatst naar de regel code onder het label van de foutafhandeling - in dit geval roept het een aangepast berichtvenster aan om de gebruikers te informeren dat het blad al wordt afgesloten. Het label voor de foutafhandeling moet een dubbele punt hebben om VBA te laten zien dat het een label is.

1 dwalen:

De code springt dan naar de regel onder het label en retourneert het aangepaste berichtvenster.

Dit is handig wanneer u niet wilt dat uw gebruiker op Foutopsporing kan klikken om in uw code te gaan, aangezien het standaard Excel-bericht altijd een optie geeft om de code op te sporen.

We hebben ook een Sluit sub in de procedure. Als er is NIET een blad genaamd Blad1, dan zou die regel code worden uitgevoerd en het actieve blad hernoemen naar Blad1. We willen dan dat de code eindigt - we willen niet dat deze doorgaat naar de foutafhandelaar en het berichtvenster toont. De regel Exit Sub verlaat dan de procedure en stopt de code.

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave