VBA ved fejl Genoptag næste eller Gå til 0

Denne vejledning forklarer VBA om fejl Genoptag næste og Goto -erklæring.

Selv når din kode er perfekt konstrueret, gør brugeren muligvis ikke, som du ville forvente. Af denne grund skal du indsætte fejlbehandlere i din kode, når der kan være en grund til, at der kan opstå en fejl.

Ved fejl Genoptag næste

På Fejl Genoptag Næste sætning fortæller VBA at springe alle kodelinjer over, der indeholder fejl, og fortsætte til den næste linje. VBA ignorerer linien eller linjerne med en fejl i den og går videre til den næste linje med kode.

Dette er nyttigt, når den kodelinje, der kan ignoreres, ikke er kritisk for en vellykket kørsel af makroen, men kan være ganske farlig, hvis den bruges forkert, da det kan give utilsigtede resultater.

For eksempel i nedenstående procedure:

123456 Sub HideAllSheets ()Dim ws Som regnearkFor hver gang i ActiveWorkbook.Sheetsws.Visible = FalskNæste wsAfslut Sub

Hvis vi kører denne kode, får vi en fejl, da vi ikke kan skjule alle regnearkene i en projektmappe - mindst én projektmappe skal forblive synlig.

Men hvis vi ændrer proceduren som vist nedenfor, fortsætter koden forbi fejlen og lader det sidste ark i projektmappen være synlig.

1234567 Sub HideAllSheets ()Ved fejl Genoptag næsteDim ws Som regnearkFor hver gang i ActiveWorkbook.Sheetsws.Visible = FalskNæste wsAfslut Sub

Ved fejl GoTo 0

Hvis vi ikke har en fejlbehandler i vores kode, Ved fejl Gå til 0 er Excel's standardindstilling. Dette betyder dybest set, at når der opstår en fejl med Ved fejl GoTo 0, Stopper VBA med at eksekvere kode og viser sin standard fejlmeddelelsesboks, for eksempel:

Hvis vi har sat en fejlfælde som Ved fejl Genoptag næste i vores kode, men så ønsker vi at genindstille fejlen til standard, vi kan indsætte en Ved fejl Gå til 0 linje ind i vores kode.

12345678910 Sub ErrorGoTo0 ()Ved fejl Genoptag næsteDim ws Som regnearkFor hver gang i ActiveWorkbook.Sheetsws.Visible = FalskNæste wsVed fejl GoTo 0'Kør mere kode her for eksempel:ActiveSheet.Name = "Sheet1"Afslut Sub

Hvis der nu skulle være en fejl i vores kode efter Ved fejl Gå til 0 linje, vil standardfejlmeddelelsen for Excel forekomme. I dette eksempel har vi allerede et ark med navnet Sheet1 i ActiveWorkbook som koden over Ved fejl Gå til 0 skjuler arket, men sletter det ikke. Standard Excel -fejlmeddelelsen, der angiver, at arknavnet allerede er taget, vises derefter.

Ved fejl Gå til Line

Vi kan også tvinge vores kode til at flytte til en anden kodelinje ved hjælp af Ved fejl Goto Line som fortæller VBA at gå til en bestemt kodelinje, hvis der opstår en fejl.

123456789101112 Sub ErrorGoToLine ()Ved fejl Genoptag næsteDim ws Som regnearkFor hver gang i ActiveWorkbook.Sheetsws.Visible = FalskNæste wsVed fejl GoTo errhandlerActiveSheet.Name = "Sheet1"Afslut Subfejlbehandler:MsgBox ("Der er allerede et ark kaldet sheet1!", VbCritical)Afslut Sub

I ovenstående eksempel, når koden finder arket "Ark1", bevæger den sig til kodelinjen under fejlhåndteringsetiketten - i dette tilfælde kalder den en brugerdefineret meddelelsesboks, der informerer brugerne om, at arket allerede forlader. Fejlhåndteringsetiketten skal have et kolon efter det for at vise VBA, at det er en etiket.

1 fejlbehandler:

Koden hopper derefter ned til linjen under etiketten og returnerer den tilpassede meddelelsesboks.

Dette er nyttigt, når du ikke vil have din bruger i stand til at klikke på Debug for at gå ind i din kode, da standard Excel -meddelelsen altid giver mulighed for at fejlsøge koden.

Vi har også brug for en Afslut Sub i proceduren. Hvis der er IKKE et ark kaldet Sheet1, derefter ville den linje med kode køre og omdøbe det aktive ark til Sheet1. Vi vil derefter have koden til at slutte - vi vil ikke have den videre til fejlbehandleren og vise meddelelsesboksen. Afslut underlinjen Afslut derefter proceduren og stopper koden.

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave