Napaka zanemarjanja VBA

Ta vadnica bo pokazala, kako zagotoviti, da VBA prezre napako pri izvajanju kode.

Včasih, ko sestavite kodo VBA, dejansko želite, da VBA prezre vrstico kode, ko pride do napake. To je dejansko lahko zelo koristno, če na primer želite izbrisati list, če obstaja, vendar prezrite to vrstico kode, če list ne obstaja.

(Za več informacij o napakah VBA glejte naš vodnik za obravnavo napak)

On Napaka Nadaljuj Naprej

Za zanemarjanje vrstice kode v postopku uporabljamo On Napaka Nadaljuj Naprej izjavo.

123456 Sub TestErrorIgnore ()On Napaka Nadaljuj NaprejActiveWorkbook.Sheets ("Sheet4"). IzberiteActiveSheet.Delete'Več kode tukajEnd Sub

V zgornjem primeru je an On Napaka Nadaljuj Naprej izjava je bila postavljena na vrh postopka. Koda je nato sestavljena tako, da izbere Sheet4 in jo nato izbriše.

Vendar pa zaradi On Napaka Nadaljuj Naprej stavek, če koda ne najde Sheet4, bo le nadaljevala v naslednjo vrstico in izbrisala kateri koli aktivni list, ki ga najde.

To je lahko zelo nevarno, če želite izbrisati le list 4, ne pa samo lista, ki je aktiven. Da bi preprečili to napako, lahko spremenljivko nastavimo na list 4 in izbrišemo le ta list, če obstaja.

1234567 Sub TestErrorIgnore ()Zatemni kot delovni listOn Napaka Nadaljuj NaprejSet ws = ActiveWorkbook.Sheets ("Sheet4")ws.Delete'Več kode tukajEnd Sub

Ko se koda zažene, bo izbrisan samo Sheet4 ČE List 4 dejansko obstaja. Če List 4 ne obstaja, bo VBA prezrl napako in nadaljeval.

Drug primer tega je, če želite z uporabo zanke izbrisati vse liste iz delovnega zvezka. Ker mora Excelov delovni zvezek imeti vsaj en list, bo koda izbrisala vse liste razen enega.

123456 Sub DeleteSheets ()Zatemni kot delovni listZa vsak ws v ActiveWorkbook.Sheetsws.DeleteNaslednji wsEnd Sub

Zgornja koda se bo ustavila z napako.

Klik Odpravljanje napak nas bo popeljal v kodo z označeno žaljivo vrstico!

Vendar pa dodajanje On Napaka Nadaljuj Naprej vrstica do kode bo preprečila napako, rutina pa bo v delovnem zvezku vedno pustila en list.

12345678 Sub DeleteSheets ()"tukaj dodajte vrstico napakeOn Napaka Nadaljuj NaprejZatemni kot delovni listZa vsak ws v ActiveWorkbook.Sheetsws.DeleteNaslednji wsEnd Sub

Pri napaki Pojdi na 0

Pogosto, če uporabljate On Napaka Nadaljuj Naprej če želite prezreti napako, želite, da se napake ločijo pozneje v kodi, ali pa da se vaša koda preneha izvajati, če se v prihodnosti pojavi napaka. Ravnanje z napakami lahko znova nastavimo tako, da se koda znova zlomi ob napakah, tako da dodamo vrstico On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Zatemni kot delovni listOn Napaka Nadaljuj NaprejSet ws = ActiveWorkbook.Sheets ("Sheet4")ws.DeletePri napaki Pojdi na 0'Več kode tukajEnd Sub

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave