VBA On Error Nadaljuj Naprej ali Pojdi na 0

Ta vadnica bo razložila VBA On Error Resume Next in Goto Statement.

Tudi če je vaša koda popolnoma izdelana, uporabnik morda ne bo naredil tako, kot bi pričakovali. Zaradi tega morate v svojo kodo vstaviti upravljalnike napak, kadar koli bi lahko prišlo do napake.

On Napaka Nadaljuj Naprej

Ukaz On On Error Resume Next pove VBA, naj preskoči vse vrstice kode, ki vsebujejo napake, in nadaljuje z naslednjo vrstico. VBA ne upošteva vrstice ali vrstic z napako in se premakne v naslednjo vrstico kode.

To je uporabno, kadar vrstica kode, ki jo je mogoče prezreti, ni ključnega pomena za uspešno izvajanje makra, vendar je lahko zelo nevarna, če se uporablja nepravilno, saj lahko povzroči nenamerne rezultate.

Na primer, v spodnjem postopku:

123456 Sub HideAllSheets ()Zatemni kot delovni listZa vsak ws v ActiveWorkbook.Sheetsws.Visible = FalseNaslednji wsEnd Sub

Če zaženemo to kodo, bomo dobili napako, saj ne moremo skriti vseh delovnih listov v delovnem zvezku - vsaj en delovni zvezek mora ostati viden.

Če pa spremenimo postopek, kot je prikazano spodaj, se bo koda nadaljevala mimo napake, zadnji list v delovnem zvezku pa bo viden.

1234567 Sub HideAllSheets ()On Napaka Nadaljuj NaprejZatemni kot delovni listZa vsak ws v ActiveWorkbook.Sheetsws.Visible = FalseNaslednji wsEnd Sub

Pri napaki Pojdi na 0

Če v kodi nimamo upravljalnika napak, Pri napaki Pojdi na 0 je privzeta nastavitev Excela. To v bistvu pomeni, da ko pride do napake pri Pri napaki Pojdi na 0, VBA preneha izvajati kodo in prikaže standardno polje za sporočilo o napaki, na primer:

Če smo postavili past napak, kot je On Napaka Nadaljuj Naprej v naši kodi, potem pa želimo napako nastaviti na privzeto, lahko vstavimo Pri napaki Pojdi na 0 vrstico v našo kodo.

12345678910 Sub ErrorGoTo0 ()On Napaka Nadaljuj NaprejZatemni kot delovni listZa vsak ws v ActiveWorkbook.Sheetsws.Visible = FalseNaslednji wsPri napaki Pojdi na 0'Tukaj na primer zaženite več kode:ActiveSheet.Name = "List1"End Sub

Zdaj, če bi morala biti po naši kodi kakšna napaka Pri napaki Pojdi na 0 vrstica, bi se pojavilo privzeto sporočilo o napaki za Excel. V tem primeru že imamo list z imenom Sheet1 v knjigi ActiveWorkbook kot kodo nad Pri napaki Pojdi na 0 skrije list, vendar ga ne izbriše. Prikazalo se bo privzeto sporočilo o napaki programa Excel, ki označuje, da je ime lista že posneto.

Pri napaki Pojdi na Linija

Kodo lahko tudi prisilimo, da se premakne v drugo vrstico kode z uporabo Pri napaki Pojdi Linija ki pove VBA, da gre v določeno vrstico kode, če pride do napake.

123456789101112 Sub ErrorGoToLine ()On Napaka Nadaljuj NaprejZatemni kot delovni listZa vsak ws v ActiveWorkbook.Sheetsws.Visible = FalseNaslednji wsOn Error GoTo errhandlerActiveSheet.Name = "List1"Zapri podErrhandler:MsgBox ("Že obstaja list z imenom sheet1!", VbCritical)End Sub

V zgornjem primeru, ko koda najde list »List1«, se premakne v vrstico kode pod oznako upravljalnika napak - v tem primeru pokliče polje s sporočilom po meri, ki uporabnike obvesti, da list že zapusti. Nalepka za obdelavo napak mora imeti za seboj dvopičje, da VBA pokaže, da je oznaka.

1 Errhandler:

Koda bo nato skočila navzdol do vrstice pod oznako in vrnila polje s sporočilom po meri.

To je uporabno, če ne želite, da bi vaš uporabnik lahko kliknil Odpravljanje napak, da bi vstopil v vašo kodo, saj standardno Excelovo sporočilo vedno ponuja možnost za odpravljanje napak kode.

Potrebujemo tudi Zapri pod v postopku. Če obstaja NE list z imenom Sheet1, potem se bo ta vrstica kode zagnala in preimenovala aktivni list v Sheet1. Nato želimo, da se koda konča - ne želimo, da se prenese v upravljalnik napak in prikaže polje s sporočilom. Vrstica Exit Sub nato zapusti postopek in zaustavi kodo.

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

wave wave wave wave wave