VBA o izjavah o napakah - Top 3 načini za obvladovanje napak

Izjava Excel VBA o napaki

Stavek VBA On Error je vrsta mehanizma za obdelavo napak, ki se uporablja za vodenje kode, kaj storiti, če naleti na katero koli vrsto napake, običajno kadar koda naleti na napako, se izvajanje ustavi, vendar s tem stavkom v kodi izvedba koda se nadaljuje, saj ima nabor navodil, ko naleti na napako.

Če predvidevate napako v kodi, ste profesionalni v kodiranju VBA. Kode ne morete narediti 100-odstotno učinkovito. Tudi če ste tako ali drugače prepričani v svojo kodo, lahko povzroči napako.

Skoraj nemogoča naloga je prepoznati in obravnavati vse vrste napak, vendar imamo v VBA različne načine za obvladovanje napak. Med pisanjem kode morda ne boste predvidevali, kakšno kodo napake lahko vrne, če pa pride do kakršne koli napake, boste porabili več časa za odpravljanje napak kot samo pisanje kode.

Kaj je napaka?

Napaka ni nič drugega kot vrstice kode ni mogoče izvesti zaradi funkcionalnosti ali napačne kode. Poskusite torej predvideti napako in jo odpraviti.

Če na primer poskusite izbrisati list, ki ga ni, očitno ne moremo izvršiti te vrstice kode.

Napaka je treh vrst, napaka prevedena je zaradi neprijavljenih spremenljivk. Druga je napaka pri vnosu podatkov zaradi napačnih vnosov kodirnika, tretja pa napaka v času izvajanja, ker VBA ne more prepoznati vrstice kode. Za poskus dostopa do delovnega lista ali delovnega zvezka ali dela z njim, ki ga ni.

V VBA pa imamo izjavo, ki obravnava vse te vrste napak, tj. Izjavo "O napaki".

Vrste izjav o napakah

Ključna točka obravnave napak v VBA je stavek "On Error". Na primer On Error, »nadaljuj naslednjo vrstico«, »pojdi na drugo vrstico ali skoči na drugo« itd.…

Izjava o napaki vsebuje tri vrste stavkov.

  1. GoTo 0 pomeni, da mora excel ali VBA, kadar pride do napake med izvajanjem, prikazati polje s sporočilom o napaki, v katerem piše, kakšno napako je naletel. Takoj ko VBA izvede kodo, onemogoči vse upravljavce napak v tem bloku kode.
  2. Nadaljuj naprej pomeni, da vsakič, ko pride do napake, ta stavek naloži excelu, da to napako ignorira in nadaljuje (nadaljuje z naslednjo) naslednjo vrstico kode, ne da bi prikazal sporočila o napakah. To ne pomeni, da bo odpravil napako; temveč samo ignorira napako.
  3. GoTo (oznaka) pomeni, da kadarkoli VBA naleti na napako, pojdite na dodeljeno oznako. Zaradi tega koda preskoči na določeno vrstico, ki jo nudi kodirnik.

Najboljši trije načini za obravnavo napak v VBA

# 1 - Ob napaki Nadaljuj naprej

Predpostavimo, da vrednost 20 delite z 0, spremenljivko pa ste razglasili, da ji dodelite rezultat delitve.

Koda:

Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub

Če zaženete to kodo, se prikaže spodnja napaka.

Torej nobene številke ne morete razdeliti na nič. Številka napake med izvajanjem je 11, to je delitev z ničlo.

Zdaj bom kodi dodal še eno vrstico.

Koda:

Sub OnError_Example1 () Dim i As Integer, j As Integer i = 20/0 j = 20/2 End Sub

Zdaj bom na vrhu dodal izjavo o nadaljevanju napake.

Koda:

Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Resume Next i = 20/0 j = 20/2 End Sub

Zdaj, če izvedem to kodo, mi ne bo več sporočila o napaki; namesto tega bo izvedel naslednjo vrstico kode, tj. j = 20/2.

# 2 - Napaka GoTo Label

Deklariral sem tri spremenljivke.

Koda:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer

Za vse te tri spremenljivke bom dodelil izračun delitve.

Koda:

Sub OnError_Example1 () Dim i Kot celo število, j Kot celo število, k Kot celo število i = 20/0 j = 20/2 k = 10/5

Rezultat vseh teh treh izračunov bo prikazan v polju za sporočila.

Koda:

Sub OnError_Example1 () Dim i Kot celo število, j Kot celo število, k Kot celo število i = 20/0 j = 20/2 k = 10/5 MsgBox "Vrednost i je" & i & vbNewLine & "Vrednost j je "& j & _ vbNewLine &" Vrednost k je "& k & vbNewLine End Sub

Zdaj bom poskusil izvršiti to kodo, ker izračun "I" ni pravilen. Dobili bomo napako časa izvajanja 11.

Zdaj bom dodal izjavo "Ob nadaljevanju napake naprej".

Koda:

Sub OnError_Example1() Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20 / 0 j = 20 / 2 k = 10 / 5 MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _ vbNewLine & "The value of k is " & k & vbNewLine End Sub

If I execute this, it will skip the “I” calculation and execute the remaining two calculations, and the result is as follows.

Now instead of “On Error Resume Next,” I will add “On Error GoTo KCalculation.”

Code:

Sub OnError_Example1() Dim i As Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20 / 0 j = 20 / 2 KCalculation: k = 10 / 5 MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _ vbNewLine & "The value of k is " & k & vbNewLine End Sub
Opomba: Tu je "KCalculation" ime oznake, ki sem jo dal; lahko dodate svoje ime etikete brez prostora.

Zdaj, če izvedem to vrstico kode, ne bo skočila na naslednjo vrstico. Namesto tega bo preskočil na ime oznake, ki sem ga vnesel, tj. "KCalcualtion." Tu bo prezrl napako, ki jo je dal "I", in prav tako ne bo izvedel izračuna "j", ampak takoj skočil na "KCalcualtion."

# 3 - Natisnite številko napake v VBA

Na koncu kode lahko v ločeno okence za sporočila natisnemo tudi številko napake. Naslednja vrstica kode bo to opravila.

Koda:

Napačna številka

Zdaj bom zagnal to kodo, prvo sporočilo pa bo prikazalo rezultate izračuna.

Kliknite V redu. Prikazalo se bo še eno okence s sporočilom, da bo prikazana številka napake.

Gremo 11; kot rezultat, tj. delitev z ničlo.

Namesto številke lahko dobimo tudi opis napake. Samo spremeniti moramo kodo. Spodaj je koda.

Koda:

Napaka Opis

Prikazal bo opis, kot je ta.

Stvari, ki si jih je treba zapomniti

  • Ko na koncu kode vnesete “On Error Resume Next”, ne pozabite dodati izjave “On Error GoTo 0.”
  • Ime nalepke mora biti na obeh mestih enako.
  • Imena etiket ni treba določiti vnaprej.
  • Na koncu v ločenem okencu za sporočila vedno poglejte, do česa je prišlo do napake.

Zanimive Članki...