VBA o chybových vyhláseniach Najlepšie 3 spôsoby riešenia chýb

Excel VBA o chybovom vyhlásení

Príkaz VBA On Error je typ mechanizmu spracovania chýb, ktorý sa používa na vedenie kódu k tomu, čo má robiť, ak narazí na akýkoľvek typ chyby, zvyčajne keď sa v kóde vyskytne chyba, vykonanie sa zastaví, ale s týmto vyhlásením v kóde sa vykonanie kód pokračuje tak, ako má nastavený postup, keď sa vyskytne chyba.

Predvídanie chyby v kóde z vás robí profesionála v kódovaní VBA. Nemôžete urobiť kód stopercentne efektívnym. Aj keď ste si svojim kódom istí tým či oným spôsobom, môže to spôsobiť chybu.

Je takmer nemožné identifikovať a spracovať všetky druhy chýb, ale máme rôzne spôsoby riešenia chýb vo VBA. Počas písania kódu možno nepredpokladáte, že sa druh chybového kódu môže zvrhnúť, ale ak dôjde k akejkoľvek chybe, budete tráviť viac času ladením ako samotným písaním kódu.

Čo je to chyba?

Chyba nie je nič iné ako riadok kódu, ktorý nemožno vykonať z dôvodu funkčnosti alebo nesprávneho kódu. Skúste teda chybu predvídať a zvládnuť ju.

Napríklad, ak sa pokúsite vymazať hárok, ktorý tam nie je, potom tento riadok kódu zjavne nemôžeme vykonať.

Chyba je troch typov, jedna je chybou kompilácie kvôli nedeklarovaným premenným. Druhou je chyba zadávania údajov v dôsledku nesprávnych vstupov kódovača a treťou chyba spustenia v dôsledku toho, že VBA nedokáže rozpoznať riadok kódu. Za pokus o prístup alebo prácu na pracovnom hárku alebo zošite, ktorý tam nie je.

Máme ale vyhlásenie vo VBA na spracovanie všetkých týchto druhov chýb, tj vyhlásenie „Pri chybe“.

Typy vyhlásení o chybe

Kľúčovým bodom pri riešení chýb vo VBA je vyhlásenie „Pri chybe“. Napríklad pri chybe „pokračovať v ďalšom riadku“, „prejsť na iný riadok alebo skočiť na iný riadok“ atď.…

Príkaz On Error má tri druhy príkazov.

  1. GoTo 0 znamená, že kedykoľvek dôjde k chybe za behu, program Excel alebo VBA by mali zobraziť okno s chybovým hlásením s uvedením druhu chyby, s ktorou sa stretol. Hneď ako VBA vykoná kód, zakáže všetky obslužné rutiny chýb v danom bloku v kóde.
  2. Obnoviť ďalšie znamená, že kedykoľvek sa vyskytne chyba, toto vyhlásenie dá programu Excel ignorovať túto chybu a prejsť na ďalší riadok kódu (bez ďalších chýb) bez zobrazenia akýchkoľvek chybových správ. Neznamená to, že chybu opraví; skôr iba ignoruje chybu.
  3. GoTo (štítok) znamená, že kedykoľvek sa vo VBA vyskytne chyba, prejdite na priradený štítok. Toto umožňuje kódu preskočiť na konkrétny riadok poskytovaný kódovačom.

Najlepšie 3 spôsoby riešenia chýb vo VBA

# 1 - Pri chybe Pokračovať ďalej

Predpokladajme, že hodnotu 20 vydelíte číslom 0 a deklarovali ste premennú, aby ste jej priradili výsledok rozdelenia.

Kód:

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

Ak spustíte tento kód, spôsobí to nasledujúcu chybu.

Nemôžete teda vydeliť žiadne číslo nulovou hodnotou. Číslo chyby za behu je 11, tj. Delenie nulou.

Teraz do kódu pridám ešte jeden riadok.

Kód:

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

Teraz v hornej časti pridám vyhlásenie Pri chybe pokračovať.

Kód:

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

Teraz, ak vykonám tento kód, nebude mi dávať žiadne chybové správy; skôr vykoná nasledujúci riadok kódu, tj. j = 20/2.

# 2 - Pri chybe štítok GoTo

Deklaroval som tri premenné.

Kód:

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

Ku všetkým týmto trom premenným priradím výpočet delenia.

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

Výsledok všetkých týchto troch výpočtov sa zobrazí v okne so správou.

Kód:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "Hodnota i je" & i & vbNewLine & "Hodnota j je „& j & _ vbNewLine &“ Hodnota k je „& k & vbNewLine koncový sub

Teraz sa pokúsim tento kód vykonať, pretože výpočet „ja“ nie je správny. Dostaneme chybu chodu 11.

Teraz pridám vyhlásenie „Pri chybe Pokračovať ďalej“.

Kód:

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
Poznámka: Tu je „KCalculation“ názov štítku, ktorý som dal; môžete dať svoj vlastný názov štítku bez medzier.

Teraz, ak vykonám tento riadok kódu, nepreskočí na ďalší riadok. Namiesto toho preskočí na názov štítku, ktorý som zadal, tj. „KCalcualtion“. Tu bude ignorovať chybu danú „I“ a tiež nebude vykonávať výpočet „j“, ale rovno skočí na „KCalcualtion“.

# 3 - Číslo chyby tlače vo VBA

Na konci kódu môžeme tiež vytlačiť číslo chyby v samostatnej schránke správ. Nasledujúci riadok kódu vykoná túto prácu.

Kód:

Číslo chyby

Teraz spustím tento kód, prvé okno so správou zobrazí výsledky výpočtu.

Kliknite na OK. Zobrazí sa ešte jedno okno so správou a číslo chyby.

Ideme 11; vo výsledku, teda Rozdelenie nulou.

Namiesto čísla môžeme dostať aj popis chyby. Potrebujeme len zmeniť kód. Nižšie je uvedený kód.

Kód:

Chybný popis

Zobrazí sa tento popis.

Na čo treba pamätať

  • Po zadaní „Pri chybe Pokračovať ďalej“ na konci kódu nezabudnite pridať vyhlásenie „Pri chybe GoTo 0.“
  • Názov štítku by mal byť na oboch miestach rovnaký.
  • Názvy štítkov nie je potrebné definovať dostatočne vopred.
  • Nakoniec si vždy pozrite, v čom došlo k chybe, cez samostatné okno so správou.

Zaujímavé články...