VBA Ved feil Gjenoppta neste eller Gå til 0

Denne opplæringen vil forklare VBA om feiloppstart neste og gå til erklæring.

Selv når koden din er perfekt konstruert, kan det hende at brukeren ikke gjør som du forventer. Av denne grunn må du sette inn feilbehandlere i koden hver gang det kan være en grunn til at det kan oppstå en feil.

Ved feil Fortsett neste

On Error Resume Next -setningen forteller VBA å hoppe over alle kodelinjer som inneholder feil og fortsette til neste linje. VBA vil ignorere linjen eller linjene med en feil i den, og gå videre til den neste linjen med kode.

Dette er nyttig når kodelinjen som kan ignoreres ikke er kritisk for vellykket drift av makroen, men kan være ganske farlig hvis den brukes feil, da det kan gi utilsiktede resultater.

For eksempel, i prosedyren nedenfor:

123456 Sub HideAllSheets ()Dim ws Som regnearkFor hver uke i ActiveWorkbook.Sheetsws.Visible = FalskNeste wsSlutt Sub

Hvis vi kjører denne koden, får vi en feil da vi ikke kan skjule alle regnearkene i en arbeidsbok - minst én arbeidsbok må forbli synlig.

Men hvis vi endrer prosedyren som vist nedenfor, vil koden fortsette forbi feilen og la det siste arket i arbeidsboken være synlig.

1234567 Sub HideAllSheets ()Ved feil Fortsett nesteDim ws Som regnearkFor hver uke i ActiveWorkbook.Sheetsws.Visible = FalskNeste wsSlutt Sub

Ved feil GoTo 0

Hvis vi ikke har en feilbehandler i koden vår, Ved feil Gå til 0 er Excel standardinnstilling. Dette betyr i utgangspunktet at når det oppstår en feil med Ved feil GoTo 0, Vil VBA slutte å utføre kode og vise standard feilmeldingsboks, for eksempel:

Hvis vi har satt en feilfelle som Ved feil Fortsett neste i koden vår, men da vi ønsker å sette feilen på nytt til standard, kan vi sette inn en Ved feil Gå til 0 linje inn i koden vår.

12345678910 Sub ErrorGoTo0 ()Ved feil Fortsett nesteDim ws Som regnearkFor hver uke i ActiveWorkbook.Sheetsws.Visible = FalskNeste wsVed feil GoTo 0'Kjør mer kode her for eksempel:ActiveSheet.Name = "Sheet1"Slutt Sub

Hvis det skulle være noen feil i koden vår etter Ved feil Gå til 0 linje, vil standard feilmelding for Excel forekomme. I dette eksemplet har vi allerede et ark med navnet Sheet1 i ActiveWorkbook som koden over Ved feil Gå til 0 skjuler arket, men sletter det ikke. Standard Excel -feilmelding som indikerer at arknavnet allerede er tatt, vil da vises.

Ved feil Gå til Linje

Vi kan også tvinge koden til å flytte til en annen kodelinje ved å bruke På feil Goto Linje som forteller VBA å gå til en bestemt kodelinje hvis det oppstår en feil.

123456789101112 Sub ErrorGoToLine ()Ved feil Fortsett nesteDim ws Som regnearkFor hver uke i ActiveWorkbook.Sheetsws.Visible = FalskNeste wsVed feil GoTo errhandlerActiveSheet.Name = "Sheet1"Avslutt Subfeilhandler:MsgBox ("Det er allerede et ark som heter sheet1!", VbCritical)Slutt Sub

I eksemplet ovenfor, når koden finner arket "Ark1", går den til koderaden under feilbehandlingsetiketten - i dette tilfellet kaller den en egendefinert meldingsboks som informerer brukerne om at arket allerede går ut. Feilhåndteringsetiketten må ha et kolon etter den for å vise VBA at det er en etikett.

1 feilbehandler:

Koden hopper deretter ned til linjen under etiketten og returnerer den egendefinerte meldingsboksen.

Dette er nyttig når du ikke vil at brukeren skal kunne klikke på Debug for å gå inn i koden din, ettersom standard Excel -melding alltid gir et alternativ for å feilsøke koden.

Vi trenger også en Avslutt Sub i prosedyren. Hvis det er IKKE et ark som heter Sheet1, så ville den koderaden kjøre og gi det aktive arket nytt navn til Sheet1. Vi vil da at koden skal slutte - vi vil ikke at den skal fortsette til feilbehandleren og vise meldingsboksen. Exit Sub -linjen avslutter deretter prosedyren og stopper koden.

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

wave wave wave wave wave