Deze zelfstudie laat zien hoe u ervoor kunt zorgen dat VBA een fout negeert bij het uitvoeren van uw code.
Soms, wanneer u VBA-code maakt, wilt u eigenlijk dat VBA een regel code negeert wanneer er een fout optreedt. Dit kan erg handig zijn als u bijvoorbeeld een blad wilt verwijderen als het bestaat, maar die regel code negeert als het blad niet bestaat.
(Zie onze Error Handling Guide voor meer informatie over VBA-fouten)
Bij fout Hervatten volgende
Om een regel code in een procedure te negeren, gebruiken we de Bij fout Hervatten volgende uitspraak.
123456 | Sub TestErrorIgnore()Bij fout Hervatten volgendeActiveWorkbook.Sheets("Blad4").selectActiveSheet.Verwijderen'meer code hier'Einde sub |
In het bovenstaande voorbeeld is een Bij fout Hervatten volgende verklaring is bovenaan de procedure geplaatst. De code wordt vervolgens geconstrueerd om Sheet4 te selecteren en vervolgens te verwijderen.
Echter, door de Bij fout Hervatten volgende statement, als de code Blad4 niet vindt, gaat het gewoon door naar de volgende regel en verwijdert het het actieve blad dat het vindt.
Dit kan behoorlijk gevaarlijk zijn als u alleen Blad 4 wilt verwijderen en niet alleen het Blad dat actief is. Om deze fout te voorkomen, kunnen we een variabele instellen op blad 4 en alleen dat blad verwijderen ALS het bestaat.
1234567 | Sub TestErrorIgnore()Dim ws als werkbladBij fout Hervatten volgendeStel ws = ActiveWorkbook.Sheets("Blad4") inws.Verwijderen'meer code hier'Einde sub |
Wanneer de code nu wordt uitgevoerd, wordt alleen Sheet4 verwijderd INDIEN Blad4 bestaat echt. Als Blad 4 niet bestaat, negeert VBA de fout en gaat door.
Een ander voorbeeld hiervan is als u alle bladen uit uw werkmap wilt verwijderen met een lus. Omdat een Excel-werkmap ten minste één blad moet hebben, verwijdert de code alle bladen behalve één.
123456 | Sub Verwijder Bladen()Dim ws als werkbladFor Each ws In ActiveWorkbook.Sheetsws.VerwijderenVolgende wsEinde sub |
De bovenstaande code stopt met een fout.
Klikken op Debuggen neemt ons mee naar de code met de beledigende regel gemarkeerd!
Echter, het toevoegen van de Bij fout Hervatten volgende regel naar de code voorkomt de fout en de routine laat altijd één blad in de werkmap achter.
12345678 | Sub Verwijder Bladen()'voeg hier een foutregel toe'Bij fout Hervatten volgendeDim ws als werkbladFor Each ws In ActiveWorkbook.Sheetsws.VerwijderenVolgende wsEinde sub |
Bij fout Ga naar 0
Vaak als je gebruikt Bij fout Hervatten volgende om een fout te negeren, wilt u later in de code fouten opsporen, of wilt u dat uw code stopt met uitvoeren als er in de toekomst een fout optreedt. We kunnen de foutafhandeling opnieuw instellen zodat de code opnieuw zal breken bij fouten door de regel On Error GoTo 0 toe te voegen.
12345678 | Sub TestErrorIgnore()Dim ws als werkbladBij fout Hervatten volgendeStel ws = ActiveWorkbook.Sheets("Blad4") inws.VerwijderenBij fout Ga naar 0'meer code hier'Einde sub |