VBA Ignorer feil

Denne opplæringen vil demonstrere hvordan du sikrer at VBA ignorerer en feil når du kjører koden din.

Noen ganger når du konstruerer VBA -kode, vil du faktisk at VBA skal ignorere en kodelinje når det oppstår en feil. Dette kan faktisk være ganske nyttig hvis du for eksempel vil slette et ark hvis det eksisterer, men ignorere denne kodelinjen hvis arket ikke eksisterer.

(Se vår feilhåndteringsguide for mer informasjon om VBA -feil)

Ved feil Fortsett neste

For å ignorere en kodelinje i en prosedyre, bruker vi Ved feil Fortsett neste uttalelse.

123456 Sub TestErrorIgnore ()Ved feil Fortsett nesteActiveWorkbook.Sheets ("Sheet4"). VelgActiveSheet.Delete'mer kode herSlutt Sub

I eksemplet ovenfor, en Ved feil Fortsett neste uttalelsen er plassert øverst i prosedyren. Koden konstrueres deretter for å velge Sheet4 og deretter slette den.

Men på grunn av Ved feil Fortsett neste setning, hvis koden ikke finner Sheet4, fortsetter den bare til neste linje og sletter det aktive arket den finner.

Dette kan være ganske farlig hvis det bare var ark 4 du ville slette, og ikke bare arket som er aktivt. For å forhindre denne feilen kan vi sette en variabel til ark 4 og slette bare det arket hvis det eksisterer.

1234567 Sub TestErrorIgnore ()Dim ws Som regnearkVed feil Fortsett nesteSett ws = ActiveWorkbook.Sheets ("Sheet4")ws.Slett'mer kode herSlutt Sub

Når koden kjøres, blir bare Sheet4 slettet HVIS Sheet4 eksisterer faktisk. Hvis ark 4 ikke eksisterer, ignorerer VBA feilen og fortsetter.

Et annet eksempel på dette er hvis du vil slette alle arkene fra arbeidsboken din med en løkke. Siden en Excel -arbeidsbok må ha minst ett ark, sletter koden alle arkene bortsett fra ett.

123456 Sub DeleteSheets ()Dim ws Som regnearkFor hver uke i ActiveWorkbook.Sheetsws.SlettNeste wsSlutt Sub

Koden ovenfor stopper med en feil.

Klikk Feilsøk tar oss med inn i koden med den fornærmende linjen uthevet!

Imidlertid legger du til Ved feil Fortsett neste linje til koden forhindrer feilen, og rutinen vil alltid legge igjen ett ark i arbeidsboken.

12345678 Sub DeleteSheets ()'legg til feillinje herVed feil Fortsett nesteDim ws Som regnearkFor hver uke i ActiveWorkbook.Sheetsws.SlettNeste wsSlutt Sub

Ved feil GoTo 0

Ofte hvis du bruker Ved feil Fortsett neste Hvis du vil ignorere en feil, vil du at feilen skal fanges opp senere i koden, eller at koden skal slutte å kjøre hvis det oppstår en feil i fremtiden. Vi kan sette feilhåndteringen på nytt slik at koden igjen vil bryte feil ved å legge til linjen On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws Som regnearkVed feil Fortsett nesteSett ws = ActiveWorkbook.Sheets ("Sheet4")ws.SlettVed feil GoTo 0'mer kode herSlutt Sub

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave