VBA Ignoruoti klaidą

Ši pamoka parodys, kaip užtikrinti, kad VBA nepaisytų klaidos paleidžiant jūsų kodą.

Kartais, kai kuriate VBA kodą, iš tikrųjų norite, kad įvykus klaidai VBA ignoruotų kodo eilutę. Tai iš tikrųjų gali būti labai naudinga, jei, pavyzdžiui, norite ištrinti lapą, jei jis yra, tačiau ignoruokite šią kodo eilutę, jei lapo nėra.

(Daugiau informacijos apie VBA klaidas rasite mūsų klaidų tvarkymo vadove)

Dėl klaidos Tęsti toliau

Norėdami ignoruoti kodo eilutę procedūroje, naudojame Dėl klaidos Tęsti toliau pareiškimas.

123456 Sub TestErrorIgnore ()Dėl klaidos Tęsti toliauActiveWorkbook.Sheets ("Sheet4"). PasirinkiteActiveSheet.Delete'daugiau kodo čiaPabaiga Sub

Aukščiau pateiktame pavyzdyje an Dėl klaidos Tęsti toliau pareiškimas buvo pateiktas procedūros viršuje. Tada kodas sukuriamas taip, kad pasirinktų „Sheet4“ ir jį ištrintų.

Tačiau dėl Dėl klaidos Tęsti toliau teiginį, jei kodas neranda „Sheet4“, jis tiesiog pereis į kitą eilutę ir ištrins bet kurį aktyvų lapą.

Tai gali būti gana pavojinga, jei norite ištrinti tik 4 lapą, o ne tik lapą. Norėdami išvengti šios klaidos, galime nustatyti kintamąjį į 4 lapą ir ištrinti tik tą lapą, jei jis egzistuoja.

1234567 Sub TestErrorIgnore ()Dim ws kaip darbalapisDėl klaidos Tęsti toliauNustatykite ws = ActiveWorkbook.Sheets ("Sheet4")ws. Ištrinti'daugiau kodo čiaPabaiga Sub

Dabar, kai kodas bus paleistas, bus ištrintas tik 4 lapas JEI 4 lapas iš tikrųjų egzistuoja. Jei 4 lapo nėra, VBA ignoruoja klaidą ir tęsia.

Kitas to pavyzdys - jei norite ištrinti visus darbaknygės lapus naudodami kilpą. Kadangi „Excel“ darbaknygėje turi būti bent vienas lapas, kodas ištrins visus lapus, išskyrus vieną.

123456 Sub DeleteSheets ()Dim ws kaip darbalapisUž kiekvieną ws ActiveWorkbook.Sheetsws. IštrintiKitas wsPabaiga Sub

Aukščiau pateiktas kodas sustos su klaida.

Spustelėję Derinimas pateksime į kodą su paryškinta pažeidimo eilute!

Tačiau pridėjus Dėl klaidos Tęsti toliau eilutė prie kodo užkirs kelią klaidai, o įprasta darbo knyga visada paliks vieną lapą.

12345678 Sub DeleteSheets ()“čia pridėkite klaidos eilutęDėl klaidos Tęsti toliauDim ws kaip darbalapisUž kiekvieną ws ActiveWorkbook.Sheetsws. IštrintiKitas wsPabaiga Sub

Klaida „GoTo 0“

Dažnai, jei naudojate Dėl klaidos Tęsti toliau Jei norite ignoruoti klaidą, norite, kad vėliau įvestumėte klaidą, arba norite, kad jūsų kodas nustotų veikti, jei ateityje įvyktų klaida. Mes galime iš naujo nustatyti klaidų tvarkymą taip, kad kodas vėl sugadintų klaidas, pridėdami eilutę On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws kaip darbalapisDėl klaidos Tęsti toliauNustatykite ws = ActiveWorkbook.Sheets ("Sheet4")ws. IštrintiKlaida „GoTo 0“'daugiau kodo čiaPabaiga Sub

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave