Spracovanie chýb Excel VBA

Chybové spracovanie je veľmi užitočný a významný mechanizmus programovania jazykov, ako je VBA. Kontrola alebo prevencia chýb je aspektom spracovania chýb, čo znamená prijatie účinných a významných opatrení v skripte VBA, aby sa zabránilo výskytu hlásenia chýb.

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ť opravené pomocou nižšie uvedených ladiacich & rôznych vyhlásení o chybe vložených medzi kód.

Pri chybe Pokračujte ďalej

Pri chybe Goto 0

Pri chybe Goto

Pri chybe Goto -1

Spracovanie chýb VBA pomocou rôznych vyhlásení „ON ERROR“

Túto šablónu na spracovanie chýb VBA si môžete stiahnuť tu - šablónu na spracovanie chýb VBA na spracovanie chýb

Príklad č. 1 - Chyby kompilácie VBA

Ak sa vyskytne chyba vo výpise alebo syntaxi kódu VBA, keď omylom omylom napíšete kód, bude zvýraznený červenou farbou v závislosti od možností nastavenia v nástrojoch (Ak ste vybrali kontrolu automatickej syntaxe).

Keď spustíte kód s nesprávnou syntaxou, objaví sa kontextové hlásenie o chybe pri kompilácii.

kód:

 Sub SYNTAX_ERROR () MsgBox toto je môj prvý program End Sub 

„COMPILE ERROR: VARIABLE NOT DEFINED“ je najbežnejšia chyba, ktorá sa objaví ako kontextová správa. ak referenčná premenná nie je definovaná, vyskytne sa táto chyba.

kód:

 Sub VBA_FORMAT1 () A = 19049, 83 A = Formát (A, „STANDARD“) MsgBox A End Sub 

Vo vyššie uvedenom príklade som nevyhlásil typ premennej za reťazec, preto sa vyskytuje táto chyba. Takže musím deklarovať premennú ako Dim A ako String.

kód:

 Sub VBA_FORMAT1 () Dim A ako reťazec A = 19049.83 A = Formát (A, „STANDARD“) MsgBox A End Sub 

Príklad č. 2 - Chyba runtime VBA

Ak vo výpise nie sú možné matematické výrazy alebo výrazy, vyskytne sa táto runtime chyba.

kód:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Príklad č. 3 - Logické chyby alebo chyby VBA

Tieto chyby sa dajú veľmi ťažko sledovať, ani sa nezvýraznia, ani sa neobjaví chybové hlásenie. bude mať za následok neočakávané akcie a nesprávne výsledky.

Príklad: Ak sú v kóde prítomné dve premenné, môžu obsahovať nesprávnu. V takom prípade sa vyskytne logická chyba.

Ako zabrániť chybám vo VBA?

Poďme sa pozrieť na to, ako predchádzať vyššie uvedeným rôznym typom chýb vo VBA Excel.

Krok 1: Otvorenie okna editora VB Vyberte alebo kliknite na Visual Basic v skupine Kód na karte Vývojár alebo môžete kliknúť priamo na klávesovú skratku Alt + F11 .

Krok 2: Ak chcete vytvoriť prázdny modul, pod objektmi Microsoft Excel kliknite pravým tlačidlom myši na hárok 1 (VB_ERROR HANDLING) a vložte modul, aby sa vytvoril nový prázdny modul.

Spracovanie chýb VBA s možnosťou ladenia

Je lepšie zostaviť kód skôr, ako ho spustíme. Ak chcete sledovať kompiláciu, je potrebné dodržiavať nasledujúce kroky. Na paneli s nástrojmi ponuky VB, v rámci možnosti Ladiť, musíme vybrať kompilovaný projekt VBA. Keď naň kliknete, krok za krokom skontroluje kód, hneď ako zistí chybu, zvýrazní ju a zobrazí sa vyskakovacia správa, takže ju musíte opraviť. po oprave je potrebné ho skompilovať, aby ste našli ďalšiu chybu v kóde.

Poznámka: Pomocou možnosti kompilácie môžeme opraviť iba chybu kompilácie a syntaxe.

Spracovanie chýb VBA pomocou rôznych vyhlásení „ON ERROR“

1. Pri chybe pokračujte ďalej

Tu bude chyba ignorovaná a kód sa presunie ďalej.

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 Resume Next zadaný v hornej časti kódu za príkazom Sub, ignoruje to runtime chybu a prejde k nasledujúcemu príkazu, výsledkom čoho je výstup 6/2, tj 3 (vyskakovacie okno s jeho výsledkom).

kód:

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

2. Pri chybe GoTo 0 a Error GoTo -1

'On Error GoTo 0' zastaví kód na konkrétnom riadku, ktorý spôsobuje chybu, a zobrazí okno so správou, ktoré popisuje alebo označuje chybu.

kód:

 Sub onError_Go_to_0 () Pri chybe GoTo 0 Kill "C: TempFile.exe" Range ("A1"). Hodnota = 100 / "PETER" End Sub 

Zvyčajne predstavuje predvolené správanie pri kontrole chýb, je to dôležité, keď sa používa spolu s textom „On Error Resume Next“.

Zvyčajne môžete sledovať chybové hlásenie o runtime, obsahuje možnosti „Pokračovať“, „Koniec“, „Ladiť“ a „Pomocník“ . poďme sa pozrieť na použitie každého z nich.

  • Možnosť Pokračovať bude ignorovať výnimku a bude pokračovať v kóde, ak je to možné.
  • Koncová voľba ukončí program.
  • Ladiaca voľba zvýrazní príkaz, v ktorom sa vyskytla chyba. čo vám pomôže odladiť alebo opraviť kód.
  • Pomocník vás zavedie na otvorenie stránky pomocníka Microsoft MSDN.

On Error GoTo 0 with On Error Resume Next

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 

Vo vyšš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. keď spustím vyššie uvedený kód, zobrazí sa chyba rozdelenia, tj nezhoda typu (číselnú hodnotu nemožno deliť textom).

Pri chybe GoTo 0 zakáže akékoľvek zachytávanie chýb, ktoré je v súčasnosti prítomné v kóde VBA, tj vypne spracovanie chýb v hlavnom kóde, zatiaľ čo pri chybe GoTo -1 vymaže spracovanie chýb a nastaví ho na nič, čo by pomohlo alebo umožnilo vytvoriť ďalšiu chybu.

3. Pri chybe GoTo <LABEL

VBA na prenos programového riadenia na riadok, za ktorým nasleduje štítok, ak sa vyskytnú nejaké chyby pri behu, tj kód preskočí na určený štítok. Tu sa nevykonajú kódové príkazy medzi riadkom výnimky a návestím.

Táto metóda je vhodnejšia a významnejšia pri opúšťaní programu elegantne, ak počas vykonávania dôjde k závažnej závažnej chybe.

V nižšie uvedenom kóde VBA, akonáhle sa vyskytne chyba na riadku 3, program prenesie riadenie na riadok 6, tj štítok (kontextová správa sa zobrazí ako „obsluha výnimky“ ).

kód:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Tento riadok sa nevykoná" Exit Sub Error_handler: MsgBox "handler výnimiek" End Sub 

Tu si môžete všimnúť, že „Exit Sub“ by sa mal použiť tesne pred štítkom „Error_handler:“, toto je zabezpečené, aby sa blok kódu obsluhy chýb zastavil alebo nevykonal, ak nedôjde k chybe. Teraz môžete zošit uložiť ako „zošit Makro Excel“. Kliknutím na tlačidlo Uložiť v ľavom rohu tabuľky.

Opäť, ak otvoríte súbor, môžete kliknúť na klávesovú skratku, tj Fn + Alt + f8, zobrazí sa dialógové okno „Makro“, kde môžete spustiť uložený makro kód podľa vášho výberu, alebo môžete kliknúť na Fn + Alt + F11 pre celé okno makra.

Čo je potrebné pamätať

  • Predtým, ako napíšete kód, musíte sa ubezpečiť, že je skontrolované alebo vybraté omylom prerušenie neošetřených chýb . možnosť odchytu vo všeobecných možnostiach nástroja na paneli nástrojov VBA.
  • Je to predvolené nastavenie, ktoré pomáha zastaviť kód pri chybách, ktoré sa nezaobchádzajú.
  • Rozbiť všetky chyby: Zastaví sa tým kód pri všetkých typoch chýb.
  • Modul Break-in Class: V prípade, že sa v kóde použije objekt, ako je napríklad užívateľská forma, zvýrazní sa presný riadok, ktorý chybu spôsobil.

Odporúčané články

Toto je príručka na spracovanie chýb VBA. Tu diskutujeme o tom, ako používať spracovanie chýb VBA v Exceli, spolu s niekoľkými praktickými príkladmi a šablónou Excel na stiahnutie. Môžete si tiež prečítať naše ďalšie navrhované články -

  1. VBA Declare Array (príklady)
  2. Chyba VBA pri chybe
  3. VBA nechránený hárok
  4. Stĺpce VBA Šablóny programu Excel
  5. VBA Environ

Kategórie: