Excel VBA On Error Resume Next

Manipulácia s chybami je veľmi užitočný a významný mechanizmus pre programovanie jazykov, ako je kontrola alebo prevencia chýb VBA, čo je aspekt spracovania chýb, čo znamená prijatie účinných a významných opatrení vo vnútri skriptu VBA, aby sa zabránilo výskytu chybové hlásenia o chybe. Príkaz Excel VBA On Error Resume Next ignoruje riadok kódu, ktorý spôsobuje chybu a pokračuje alebo smeruje vykonávanie na ďalší riadok nasledujúci po riadku, ktorý chybu spôsobil.

POZNÁMKA: Príkaz Error Resume Next neopravuje chyby runtime, je to chyba ignorujúca, kde bude vykonávanie VB programu pokračovať od riadku, ktorý spôsobil runtime chybu.

V podstate pri ďalšom obnovení chyby sa používa, keď chcete chybu ignorovať a pokračovať alebo pokračovať v vykonávaní kódu do ďalšej bunky.

Typy chýb vo VBA

Nižšie sú uvedené rôzne typy chýb vo VBA:

  1. Chyba syntaxe alebo chyba analýzy.
  2. Chyba kompilácie alebo kompilácie.
  3. Chyba za behu.
  4. Logická chyba.

Vyššie uvedené chyby môžu byť odstránené pomocou ladenia & 'On Error' vyhlásenia v kóde. Runtime Error sa dá predísť pomocou On Error Resume Next.

Chyba runtime VBA:

Pred vysvetlením On Error Resume Next by ste si mali byť vedomí runtime error, keď nie sú možné matematické príkazy alebo výrazy prítomné vo výpise, potom nastane táto runtime chyba.

Príklady Excel VBA pri chybe pokračovať ďalej

Nižšie sú uvedené rôzne príklady pokračovania pri chybe ďalej v programe Excel VBA:

Tu si môžete stiahnuť túto VBA pri chybe pokračovať ďalej Šablóna Excel tu - VBA pri chybe pokračovať ďalej Šablóna Excel

VBA pri chybe pokračuje ďalej - príklad č. 1

Tu bude chyba ignorovaná a vykonávanie kódu bude pokračovať. V nižšie uvedenom príklade číslo 6 nemožno vydeliť nulou, ak ho spustíte bez zadania príkazu On Error Resume Next, potom sa vyskytne nižšia uvedená chyba modulu runtime.

kód:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Ak je On Error Error Resume Next zadaný v hornej časti kódu po príkaze SUB, ignoruje to runtime chybu a prejde na nasledujúci príkaz, výsledkom bude výstup 6/2 (Výsledkom je vyskakovacie okno správy).

kód:

 Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub 

VBA pri chybe pokračuje ďalej - príklad # 2

Môžem použiť funkciu On Error Resume Next kdekoľvek v kóde od začiatku do konca. V nižšie uvedenom príklade musím urobiť výpočet 3, tj

9/3 =?

9/0 =?

9/2 =?

Vo vyššie uvedenom príklade môžete pozorovať druhý výpočet, kde akékoľvek číslo nemožno vydeliť nulou, tj 9 nemožno v druhom kroku vydeliť nulou. Predpokladajme, že ak spustíte makro bez toho, aby ste zadali príkaz On Error Resume Next, teraz môžem krok za krokom vykonať kód pomocou kroku do klávesu alebo klávesu F8, aby som pochopil, ako to funguje.

Teraz som spustiť vyššie uvedený kód, kliknutím na krok do možnosti alebo klávesu F8 často, krok za krokom. Len skopírujem vyššie uvedený kód a začnem ho spúšťať krok za krokom, pre prvý krok výpočtu sa objaví hlásenie 3.

kód:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Keď spustím druhý riadok kódu, potom sa v druhom kroku kódu vyskytne chyba uvedená za behu, kde akékoľvek číslo nemožno vydeliť nulou, tj 9 nemožno v druhom kroku vydeliť nulou.

kód:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Ak teraz kliknem na ladenie, nemôže to pokračovať ďalej, kam ma zavedie na druhý riadok kódu (zvýrazní sa žltou farbou), kde musím vykonať opravu. Ak teda ďalej kliknete na voľbu Step Into alebo F8, tretí výpočet v tomto kóde sa nevykoná.

Aby som túto chybu runtime odstránil alebo opravil, musím použiť alebo vykonať príkaz OnError Resume Next nad druhým kódom alebo na začiatku kódu pod substrátom. tak, že preskočí tento riadok kódu a prejde na tretí krok kódu a vypočíta hodnotu.

kód:

 Sub RUNTIME_30 () MsgBox 9/3 On Error Resume Next MsgBox 9/0 MsgBox 9/2 End Sub 

OR

 Sub RUNTIME_31 () On Error Resume Next MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Teraz som pri chybe pridal ďalší príkaz na pokračovanie v kóde, kde môžete použiť niektorý z vyššie uvedených kódov, ak ho spustíte krok za krokom, dostanete vyskakovacie okno s dvoma správami, jedným je výstupný prvý kód a tretí kód kalkulácia. On Error Resume Next bude ignorovať runtime chybu v druhom kóde a prejde na tretí kód.

VBA pri chybe pokračuje ďalej - príklad # 2

Teraz uvidíme kombináciu pokračovania pri chybe ďalej s chybou GoTo 0. V nižšie uvedenom kóde bude ignorovať chyby, až kým nedosiahne príkaz On Error GoTo 0 . Po príkaze On Error GoTo 0 sa kód vráti späť alebo prejde k normálnej kontrole chýb a spustí očakávanú chybu vpred.

kód:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Kill "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Hodnota = 100 / "PETER" End Sub 

Keď spustím vyššie uvedený kód, zobrazí sa chyba rozdelenia, tj nezhoda typu (číselnú hodnotu nemožno deliť textom).

Teraz môžete zošit uložiť ako „zošit Makro Excel“. Kliknutím na tlačidlo Uložiť v ľavom rohu pracovného hárka.

Keď znova otvoríte tento súbor programu Excel, môžete použiť nižšie uvedenú klávesovú skratku, tj

Klávesová skratka Function + Alt + F11 vám pomáha pristupovať ku všetkým vytvoreným makrovým kódom zošita. Klávesová skratka Function + Alt + F8 vám pomôže otvoriť dialógové okno „Makro“, ktoré obsahuje všetky názvy makier, kde môžete spustiť konkrétny požadovaný makro kód.

Čo je potrebné pamätať

  • Chyba behu sa ticho zachytí a uloží do globálneho objektu Err
  • On Error Resume Next zvyčajne zabraňuje prerušeniu vykonávania kódu.
  • Vlastnosti objektu chýb (objekt Err) sa automaticky vymažú, keď sa v rutine spracovania chýb použije Resume Next

Odporúčané články

Toto je sprievodca VBA pri chybe pokračovať ďalej. Tu diskutujeme rôzne typy chýb vo VBA Excel spolu s niektorými praktickými príkladmi a stiahnuteľnou šablónou Excel. Môžete si tiež prečítať naše ďalšie navrhované články -

  1. Kompletný sprievodca makrámi VBA
  2. VBA DateDiff (príklady so šablónou programu Excel)
  3. Ako používať vyhľadávanie cieľov vo VBA?
  4. VBA Protect Sheet with Syntax
  5. VBA Environ

Kategórie: