VBA Ignorera fel

Denna handledning visar hur du säkerställer att VBA ignorerar ett fel när du kör din kod.

Ibland när du konstruerar VBA -kod vill du faktiskt att VBA ska ignorera en kodrad när ett fel uppstår. Detta kan faktiskt vara ganska användbart om du till exempel vill ta bort ett ark om det finns, men ignorera den kodraden om arket inte finns.

(Se vår felhanteringsguide för mer information om VBA -fel)

Vid fel Återuppta nästa

För att ignorera en kodrad i en procedur använder vi Vid fel Återuppta nästa påstående.

123456 Sub TestErrorIgnore ()Vid fel Återuppta nästaActiveWorkbook.Sheets ("Sheet4"). VäljActiveSheet.Delete'mer kod härAvsluta Sub

I exemplet ovan, en Vid fel Återuppta nästa uttalande har placerats högst upp i proceduren. Koden konstrueras sedan för att välja Sheet4 och sedan ta bort den.

Men på grund av Vid fel Återuppta nästa uttalande, om koden inte hittar Sheet4, fortsätter den bara till nästa rad och raderar det aktiva blad som den hittar.

Detta kan vara ganska farligt om det bara var blad 4 du ville ta bort och inte bara det blad som är aktivt. För att förhindra detta fel kan vi ställa in en variabel till blad 4 och bara ta bort det bladet om det finns.

1234567 Sub TestErrorIgnore ()Dim ws Som arbetsbladVid fel Återuppta nästaAnge ws = ActiveWorkbook.Sheets ("Sheet4")ws.Delete'mer kod härAvsluta Sub

När koden körs kommer endast Sheet4 att raderas OM Sheet4 existerar faktiskt. Om blad 4 inte existerar kommer VBA att ignorera felet och fortsätta.

Ett annat exempel på detta är om du vill ta bort alla blad från din arbetsbok med en loop. Eftersom en Excel -arbetsbok måste ha minst ett ark raderar koden alla blad utom ett.

123456 Sub DeleteSheets ()Dim ws Som arbetsbladFör varje ws i ActiveWorkbook.Sheetsws.DeleteNästa wsAvsluta Sub

Koden ovan slutar med ett fel.

Klicka Felsöka tar oss in i koden med den kränkande raden markerad!

Men att lägga till Vid fel Återuppta nästa rad till koden förhindrar felet och rutinen lämnar alltid ett ark i arbetsboken.

12345678 Sub DeleteSheets ()'lägg till felrad härVid fel Återuppta nästaDim ws Som arbetsbladFör varje ws i ActiveWorkbook.Sheetsws.DeleteNästa wsAvsluta Sub

Vid fel GoTo 0

Ofta om du använder Vid fel Återuppta nästa om du vill ignorera ett fel vill du att fel ska hänga upp senare i koden, eller så vill du att koden ska sluta köra om ett fel uppstår i framtiden. Vi kan återställa felhanteringen så att koden återigen bryter mot fel genom att lägga till raden On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws Som arbetsbladVid fel Återuppta nästaAnge ws = ActiveWorkbook.Sheets ("Sheet4")ws.DeleteVid fel GoTo 0'mer kod härAvsluta Sub

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave