VBA On Error Resume Next or Goto 0

Tento tutoriál vysvetlí vyhlásenie VBA o chybe, pokračujte ďalej a choďte.

Aj keď je váš kód dokonale zostavený, používateľ nemusí urobiť to, čo by ste očakávali. Z tohto dôvodu musíte do kódu vložiť obslužné rutiny chýb vždy, keď môže existovať dôvod, že sa môže vyskytnúť chyba.

Pri chybe Pokračovať ďalej

Príkaz On Error Resume Next hovorí VBA, aby preskočil všetky riadky kódu obsahujúce chyby a pokračoval na nasledujúci riadok. VBA bude ignorovať riadok alebo riadky s chybou a presunie sa na nasledujúci riadok kódu.

Je to užitočné vtedy, keď riadok kódu, ktorý je možné ignorovať, nie je rozhodujúci pre úspešné spustenie makra, ale môže byť celkom nebezpečný, ak sa použije nesprávne, pretože môže viesť k neúmyselným výsledkom.

Napríklad v nižšie uvedenom postupe:

123456 Sub HideAllSheets ()Dim ws As worksheetZa každé ws v programe ActiveWorkbook. Tabuľkyws.Visible = FalseĎalšie wsKoniec pod

Ak spustíme tento kód, zobrazí sa chyba, pretože nemôžeme skryť všetky pracovné hárky v zošite - aspoň jeden zošit musí zostať viditeľný.

Ak však zmeníme postup podľa nižšie uvedeného obrázku, kód bude pokračovať za chybou a ponechá posledný hárok v zošite viditeľný.

1234567 Sub HideAllSheets ()Pri chybe Pokračovať ďalejDim ws As worksheetZa každé ws v programe ActiveWorkbook. Tabuľkyws.Visible = FalseĎalšie wsKoniec pod

Pri chybe GoTo 0

Ak v kóde nemáme popisovač chýb, Pri chybe Choďte na 0 je predvolené nastavenie programu Excel. To v zásade znamená, že keď sa vyskytne chyba s Pri chybe GoTo 0VBA zastaví spustenie kódu a zobrazí štandardné pole s chybovým hlásením, napríklad:

Ak sme dali do pasce chýb ako Pri chybe Pokračovať ďalej v našom kóde, ale potom chceme chybu znova nastaviť na predvolenú hodnotu, môžeme vložiť príponu Pri chybe Choďte na 0 riadok do nášho kódu.

12345678910 Vedľajšia chybaGoTo0 ()Pri chybe Pokračovať ďalejDim ws As worksheetZa každé ws v programe ActiveWorkbook. Tabuľkyws.Visible = FalseĎalšie wsPri chybe GoTo 0„Spustite viac kódu napríklad tu:ActiveSheet.Name = "List1"Koniec pod

Ak by teda v našom kóde mala byť po Pri chybe Choďte na 0 riadok, vyskytne sa predvolené chybové hlásenie pre program Excel. V tomto prípade už máme list s názvom Sheet1 v ActiveWorkbook ako kód nad príponou Pri chybe Choďte na 0 skryje hárok, ale nevymaže ho. Potom sa zobrazí predvolené chybové hlásenie programu Excel, ktoré naznačuje, že názov hárka už bol prevzatý.

Pri chybe Choďte na Riadok

Môžeme tiež prinútiť náš kód, aby prešiel na iný riadok kódu pomocou Pri chybe Choďte Riadok ktorý hovorí VBA, aby v prípade chyby prešiel na konkrétny riadok kódu.

123456789101112 Vedľajšia chybaGoToLine ()Pri chybe Pokračovať ďalejDim ws As worksheetZa každé ws v programe ActiveWorkbook. Tabuľkyws.Visible = FalseĎalšie wsPri chybe GoTo errhandlerActiveSheet.Name = "List1"Ukončiť suberrhandler:MsgBox („Už existuje hárok s názvom sheet1!“, VbCritical)Koniec pod

Vo vyššie uvedenom príklade, keď kód nájde hárok „List1“, presunie sa na riadok kódu pod štítkom obsluhy chýb - v tomto prípade zavolá vlastné pole správ informujúce používateľov, že hárok už končí. Štítok obsluhy chýb musí mať za sebou dvojbodku, aby ukázal VBA, že je to štítok.

1 errhandler:

Kód potom preskočí nadol na riadok pod štítkom a vráti vlastné pole so správou.

Je to užitočné, keď nechcete, aby váš používateľ mohol kliknúť na položku Ladiť a vstúpiť do vášho kódu, pretože štandardná správa programu Excel vždy ponúka možnosť ladiť kód.

Potrebujeme tiež Ukončiť sub v postupe. Ak existuje NIE list s názvom Sheet1, potom sa spustí tento riadok kódu a premenuje aktívny list na Sheet1. Potom chceme, aby kód skončil - nechceme, aby pokračoval v obsluhe chýb a zobrazoval okno so správou. Riadok Exit Sub potom ukončí postup a zastaví kód.

Vám pomôže rozvoju miesta, zdieľať stránku s priateľmi

wave wave wave wave wave