VBA Ignorer fejl

Denne vejledning viser, hvordan du sikrer, at VBA ignorerer en fejl, når du kører din kode.

Nogle gange, når du konstruerer VBA -kode, vil du faktisk have VBA til at ignorere en kodelinje, når der opstår en fejl. Dette kan faktisk være ganske nyttigt, hvis du f.eks. Vil slette et ark, hvis det findes, men ignorere denne kodelinje, hvis arket ikke findes.

(Se vores Fejlhåndteringsguide for mere information om VBA -fejl)

Ved fejl Genoptag næste

For at ignorere en kodelinje i en procedure bruger vi Ved fejl Genoptag næste udmelding.

123456 Sub TestErrorIgnore ()Ved fejl Genoptag næsteActiveWorkbook.Sheets ("Sheet4"). VælgActiveSheet.Delete'mere kode herAfslut Sub

I eksemplet ovenfor, en Ved fejl Genoptag næste erklæring er placeret øverst i proceduren. Koden konstrueres derefter til at vælge Sheet4 og derefter slette den.

På grund af Ved fejl Genoptag næste erklæring, hvis koden ikke finder Sheet4, fortsætter den bare til den næste linje og sletter det aktive ark, den finder.

Dette kan være ret farligt, hvis det kun var Sheet 4, du ønskede at slette og ikke kun det Sheet, der er aktivt. For at forhindre denne fejl kan vi indstille en variabel til ark 4 og kun slette det ark, hvis det findes.

1234567 Sub TestErrorIgnore ()Dim ws Som regnearkVed fejl Genoptag næsteIndstil ws = ActiveWorkbook.Sheets ("Sheet4")ws.Slet'mere kode herAfslut Sub

Når koden nu køres, vil kun Sheet4 blive slettet HVIS Sheet4 eksisterer faktisk. Hvis Sheet 4 ikke findes, ignorerer VBA fejlen og fortsætter.

Et andet eksempel på dette er, hvis du vil slette alle arkene fra din projektmappe ved hjælp af en loop. Da en Excel -projektmappe skal have mindst et ark, sletter koden alle arkene undtagen et.

123456 Sub DeleteSheets ()Dim ws Som regnearkFor hver gang i ActiveWorkbook.Sheetsws.SletNæste wsAfslut Sub

Koden ovenfor stopper med en fejl.

Klikker Fejlfinde vil tage os ind i koden med den stødende linje markeret!

Tilføjelse af Ved fejl Genoptag næste linje til koden forhindrer fejlen, og rutinen vil altid efterlade et ark i projektmappen.

12345678 Sub DeleteSheets ()'tilføj fejllinje herVed fejl Genoptag næsteDim ws Som regnearkFor hver gang i ActiveWorkbook.Sheetsws.SletNæste wsAfslut Sub

Ved fejl GoTo 0

Ofte hvis du bruger Ved fejl Genoptag næste for at ignorere en fejl, vil du have en fejlfinding senere i koden, eller du vil have din kode til at stoppe med at køre, hvis der opstår en fejl i fremtiden. Vi kan genindstille fejlhåndteringen, så koden igen bryder fejl ved at tilføje linjen On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws Som regnearkVed fejl Genoptag næsteIndstil ws = ActiveWorkbook.Sheets ("Sheet4")ws.SletVed fejl GoTo 0'mere kode herAfslut Sub

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

wave wave wave wave wave