Pri chybe pokračovať ďalej: Spracovanie chyby v programe Excel VBA

  • Zdieľajte To
Hugh West

V programe Microsoft Excel VBA je ošetrovanie chýb jednou z kritických úloh. Ak ste programátor, viete, že ošetrovanie chýb je dôležité na vytvorenie dokonalej aplikácie. Akákoľvek chyba vo výpise môže váš kód VBA v mnohých ohľadoch poškodiť. Preto musíte byť opatrní pri ošetrovaní týchto chýb počas vykonávania kódu VBA. Pri používaní kódu VBA v programe Excel sa môžete stretnúť s mnohými chybami počas vykonávania.jeden z nich, používame Pri chybe pokračovať ďalej vyhlásenie.

V tomto tutoriáli sa naučíte používať Pri chybe pokračovať ďalej príkaz v Exceli VBA. Tento návod bude na mieste s vhodnými príkladmi a správnymi ilustráciami. Tak zostaňte s nami.

Stiahnite si cvičebnicu

VBA Pri chybe pokračovať ďalej.xlsm

Spracovanie chýb v programe Excel VBA

Pri práci s programom Microsoft Excel VBA sa v čiastkových procedúrach stretávate s mnohými chybami. Keď VBA nemôže vykonať príkaz, vyhodí chybu počas behu.

Excel sa s týmito chybami vysporiada automaticky, takže keď sa objaví chyba počas vykonávania, zobrazí predvolenú chybovú správu, ako je táto:

Teraz ich môžete riešiť rôzne pomocou niektorých príkazov VBA. Budem sa im venovať v ďalších častiach.

Prečítajte si viac: Ako opraviť chybu #REF! v programe Excel (6 riešení)

O chybových hláseniach vo VBA

Na ošetrenie chýb počas behu dávame Excelu pokyn príkazom On Error. Ten rozhoduje o tom, aké operácie chceme okamžite vykonať ďalej. V podstate týmito druhmi ošetrenia chýb tieto chyby deaktivujeme.

V programe Excel VBA používame tri druhy príkazov On Error (syntax).

  • Pri chybe GoTo linka
  • Pri chybe pokračovať ďalej
  • On Error GoTo 0

Keď nájdete chybu, použite príkaz On Error. Pretože ak nepoužijete Pri chybe Tieto chyby počas behu budú mať katastrofálne následky. Zobrazí sa chybové hlásenie a vykonávanie sa zastaví.

Keď používame Pri chybe príkazu zapneme "povolený" obslužný program pre chyby. "Aktívny" obslužný program pre chyby je povolený obslužný program, ktorý spustí operáciu obsluhy chýb. Ak sa vyskytne chyba počas zapojenia obslužného programu pre chyby, obslužný program pre chyby aktuálnej metódy nemôže chybu zniesť. Potom sa riadenie vráti do volajúcej procedúry.

Ak má volajúci proces povolený obslužný program chyby, spustí sa, aby chybu zvládol. Ak je obslužný program chyby volajúceho systému zodpovedajúcim spôsobom zapojený, riadenie sa odovzdá späť prostredníctvom predchádzajúcich volajúcich postupov, kým sa nenájde povolený, ale neaktívny obslužný program chyby. Ak sa nenájde žiadny neaktívny povolený obslužný program chyby, znamená to, že chyba je v mieste svojho výskytu katastrofická.

Vždy, keď obsluha chyby odovzdá právomoc volajúcej procedúre, táto procedúra vyvinie existujúcu procedúru. Vykonávanie sa znovu spustí v súčasnej procedúre v okamihu zvolenom funkciou Životopis príkaz, keď obsluha chýb spracováva chyby v niektorej procedúre.

'Pri chybe pokračovať ďalej' vo VBA

Teraz sa Pri chybe pokračovať ďalej Príkaz hovorí jazyku VBA, aby ignoroval všetky riadky kódu, ktoré obsahujú chyby, a okamžite prešiel na nasledujúci riadok kódu. Potom kódy Excel VBA preskočia riadok alebo riadky, ktoré obsahujú chyby, a prejdú na nasledujúcu postupnosť kódu.

Stránka Pri chybe pokračovať ďalej príkaz núti implementáciu pokračovať príkazom, ktorý okamžite sleduje riadok kódov, ktorý vyvolal chybu behu. Tento príkaz umožňuje preskočiť vykonávanie aj v prípade, že sa vyskytne chyba behu. Ak si myslíte, že konkrétny riadok kódu môže vyvolať chybu, umiestnite procedúru na ošetrenie chýb radšej tam, než aby ste ju umiestnili na iné miesto v rámci procedúry. Pri chybe pokračovať ďalej sa stane nečinným, keď váš kód volá inú procedúru. Pri chybe pokračovať ďalej v každom pomenovanom vzore.

Je to rozumné, ak riadok kódu, ktorý môžete vynechať, nie je potrebný pre prosperujúci chod makra. Pamätajte však, že ak ho použijete nesprávne, môže byť škodlivý, pretože môže priniesť neželané výsledky.

Nezabudnite:

Príkaz On Error Resume Next neopravuje chyby behu. V podstate ignoruje chyby, pri ktorých bude vykonávanie VB pokračovať od príkazu, ktorý vygeneroval chybu behu.

Pozrite sa na nasledujúci kód:

 Sub divide() MsgBox 5 / 0 MsgBox 5 / 2 End Sub 

Pokúsili sme sa vydeliť 5 číslami 0 a 1. Spustíme kód. Zobrazí sa nasledujúci výstup:

Vyvolá chybu počas behu. Číslo nemôžeme deliť číslom 0. Pri ladení kódu sa zobrazí nasledujúca chyba:

Keď program VB nájde chybu, okamžite zastaví procedúru. Nasledujúci riadok nevykoná.

Teraz implementujme Pri chybe pokračovať ďalej pred chybovým príkazom:

 Sub divide() On Error Resume Next MsgBox 5 / 0 MsgBox 5 / 2 End Sub 

Po spustení kódu sa zobrazí nasledujúca správa:

Ako vidíte, VBA ignoruje riadok, ktorý spôsobuje chybu, a okamžite prejde na nasledujúci riadok kódu. Týmto spôsobom môžete použiť Pri chybe pokračovať ďalej príkaz na spracovanie chyby v programe Excel VBA.

Príklady príkazu 'Pri chybe pokračovať ďalej' v jazyku VBA

V nasledujúcich častiach vám poskytnem dva príklady Pri chybe pokračovať ďalej príkaz, ktorý môžete implementovať do pracovného hárka Excelu pomocou VBA. Odporúčam vám, aby ste sa všetky tieto príkazy naučili a aplikovali ich do svojho pracovného hárka. Určite to rozšíri vaše znalosti Excelu.

1. Príkaz "Pri chybe pokračovať ďalej" na skrytie pracovných hárkov

V tomto príklade vám ukážem kód VBA, ktorý skryje všetky pracovné hárky aktívneho zošita.

Pozrite sa na nasledujúcu snímku obrazovky:

Tu máme štyri pracovné hárky. Všetky skryjeme pomocou nasledujúceho kódu VBA:

 Sub hide_all_sheets() Dim copies As Worksheet For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies End Sub 

Pri spustení nasledujúceho kódu sa zobrazí nasledujúca chyba počas behu:

Excel zobrazuje túto chybu, pretože nemôžete skryť všetky listy v zošite. Preto musíte túto chybu ignorovať. Aby ste to urobili, musíte do riadku kódu implementovať príkaz On Error Resume Next.

 Sub hide_all_sheets() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies End Sub 

Po dokončení vykonávania kódu VBA sa zobrazí nasledujúci výstup:

Nakoniec sa po vykonaní nezobrazia žiadne chyby. Náš príkaz On Error Resume Next teda v kóde VBA fungoval naozaj dobre.

Prečítajte si viac: Chyby v programe Excel a ich význam (15 rôznych chýb)

2. Funkcia VLOOKUP s funkciou 'Pri chybe pokračovať ďalej' v jazyku VBA

V tomto príklade uvediem príklad funkcia VLOOKUP vo VBA Teraz tento kód VBA obsahuje aj Pri chybe pokračovať ďalej vyhlásenie.

Pozrite sa na nasledujúcu snímku obrazovky:

Tu môžete vidieť mená niektorých ľudí a ich vek. V susednej tabuľke použijeme VLOOKUP zistiť meno a vek osoby.

Zadajte nasledujúci kód:

 Sub VLOOKUP_Function() Dim i As Long For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i End Sub 

Teraz spustite makro. Zobrazí sa nasledujúca chyba:

Teraz ide o chybu počas behu. Prečo sa to deje? Pozrite sa znova na súbor údajov:

Ako vidíte, pre "Aaron" a "Emma" neexistujú žiadne údaje. Preto sa vykoná len VLOOKUP Ak chcete ignorovať chybu a pokračovať v hľadaní zvyšných vekov, použite príkaz Pri chybe pokračovať ďalej vyhlásenie.

 Sub VLOOKUP_Function() Dim i As Long On Error Resume Next For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i End Sub 

Po spustení kódu VBA sa zobrazí nasledujúci výstup:

Ako vidíte, použitím Pri chybe pokračovať ďalej príkazu sme ignorovali chybu a našli sme zvyšok veku osôb. Náš kód VBA nenašiel žiadne údaje Aarona a Emmy. Preto tieto hodnoty ignoroval a vrátil zvyšok hodnôt v pracovnom hárku programu Excel.

Čítajte viac: [Opravené] Excel našiel problém s jedným alebo viacerými odkazmi na vzorce v tomto hárku

Vypnutie funkcie "Pri chybe pokračovať ďalej" pomocou programu Excel VBA

Teraz sa môžete dostať do situácie, keď budete chcieť ignorovať chyby pre určitý segment kódu VBA. Pamätajte si, že ak v kóde VBA použijete príkaz On Error Resume Next (Pri chybe pokračovať ďalej), všetky nasledujúce chyby sa preskočia. Ak to teraz chcete vypnúť a povoliť spracovanie chýb pre iný segment, použite príkaz On Error GoTo 0 . Opäť sa povolí spracovanie chýb.

Všeobecné použitie:

Sub error_handling()

Ignorovanie chýb

Pri chybe pokračovať ďalej

// riadky kódov

Zapnutie spracovania chýb

On Error GoTo 0

//riadky kódov

Koniec podúlohy

Pozrite sa na nasledujúci kód VBA:

 Sub error_handling() Dim i As Long 'ignorovať chybu On Error Resume Next For i = 5 To 9 Cells(i, 6).Value = WorksheetFunction.VLookup(Cells(i, 5), Range("B:C"), 2, 0) Next i 'vypnúť pri chybe pokračovať ďalej On Error GoTo 0 MsgBox i / 0 End Sub 

Predtým sme použili kód pre VLOOKUP Funkcia. Tu je pridaný ďalší kus kódu, aby sme vám to demonštrovali. Náš kód bude ignorovať chyby pri vykonávaní VLOOKUP ale aktivuje spracovanie chýb po On Error GoTo 0 vyhlásenie.

Prečítajte si viac: Excel VBA: Vypnutie funkcie "Pri chybe pokračovať ďalej"

VBA 'On Error GoTo'

Predtým som sa venoval spracovaniu chýb pomocou metódy On Error. Celý náš článok bol o Pri chybe pokračovať ďalej. Existujú tiež dva typy spracovania chýb, ktoré rozoberiem v nasledujúcich častiach.

1. VBA Pri chybe prejsť na 0

Stránka Pri chybe Goto 0 je vstavané nastavenie Excelu, ak vaše kódy neobsahujú obsluhu chýb. V podstate to znamená, že keď VBA nájde chybu s On Error GoTo 0 , zastaví sa spúšťanie kódu a zobrazí sa tradičné okno s chybovým hlásením.

On Error GoTo 0 Príkaz v podstate vypína ošetrovanie chýb v danej procedúre. Nedefinuje riadok 0 ako začiatok kódu na ošetrovanie chýb, aj keď metóda obsahuje riadok s číslom 0.

Pozrite sa na nasledujúci kód:

 Sub on_error_goto_0() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies On Error GoTo 0 ActiveSheet.Name = "Copy-4" End Sub 

Tento kód sme si už ukázali. Tento kód v podstate skryje všetky pracovné hárky v aktuálnom zošite. Teraz mám skutočne ďalší kus kódu s On Error GoTo 0 Ak kód spustíte, zobrazí sa nasledujúca správa:

Táto chyba sa zobrazuje, pretože v aktívnom zošite nemôžeme mať listy s rovnakým názvom.

2. VBA Pri chybe Prejsť na riadok

Teraz môžete tiež dať príkaz programu Excel, aby spustil ďalší segment kódu, ak nájde nejakú chybu, pomocou príkazu Na riadku Chyba GoTo . Prikazuje programu Excel, aby po zistení chyby niečo vykonal.

Argumentom riadku je ľubovoľná značka riadku alebo číslo riadku. Ak náš kód spôsobí nejakú chybu počas behu, presunie sa na riadok, čo spôsobí obsluha chyby aktívna pri vykonávaní. Nezabudnite, že vami definovaný riadok musí byť presne v procedúre ako príkaz On Error, inak spôsobí chybu kompilácie.

Pozrite sa na nasledujúci kód:

 Sub on_error_goto_line() Dim copies As Worksheet On Error Resume Next For Each copies In ActiveWorkbook.Sheets copies.Visible = False Next copies On Error GoTo error_handler ActiveSheet.Name = "Copy-4" Exit Sub error_handler: MsgBox "Existuje aj list s rovnakým názvom. Skúste iný." End Sub 

Kód ste videli v predchádzajúcom príklade. Keď sme použili On Error GoTo 0 , spôsobilo to chybu. Tu sme to však nahradili príkazom Na riadku Chyba GoTo vyhlásenie.

Teraz spustite kód a uvidíte nasledujúce:

Ako vidíte, nezobrazí sa nám štandardné dialógové okno s chybou. Namiesto toho sa zobrazí vlastné okno so správou, ktoré sme vytvorili v error_handler Keď Excel nájde nejakú chybu, prejde na segment error_handler segment a zobrazí nám okno správy.

Použili sme aj Exit Sub Ak v postupe nie je žiadny hárok s názvom " VLOOKUP ", náš kód VBA premenuje aktívny hárok. Potom tu musíme ukončiť vykonávanie, pretože nemusíme pokračovať v obsluhe chyby a zobrazovať okno so správou.

VBA 'Pri chybe' nefunguje v programe Excel

Niekedy, bez ohľadu na to, ako veľmi sa snažíte, metóda On Error nefunguje. Predtým sme implementovali Pri chybe niekedy však zobrazí chyby, aj keď použijete metódu Pri chybe pokračovať ďalej alebo On Error GoTo 0 . Vo vašom kóde môže byť niekoľko dôvodov, ktoré musíte opraviť. Nebudem vám to ukazovať.

Základný dôvod pre VBA ' O chybe' Nefunguje v programe Excel je zapnutie možnosti "Prerušenie pri všetkých chybách" v programe Excel.

Postupujte podľa týchto krokov, aby ste to vyriešili:

📌 Kroky

  • Najprv stlačte Alt+F11 na klávesnici otvoríte editor VBA.
  • Teraz kliknite na Nástroje> Možnosti.

  • Potom kliknite na Všeobecné na karte Možnosti dialógové okno.

  • Tu môžete vidieť, " Prerušenie všetkých chýb " je už zaškrtnuté. V podstate vám to bráni v spracovaní chýb.
  • Ak ho chcete zmeniť, vyberte možnosť " Prerušenie pri neobsluhovaných chybách " a kliknite na OK .

Dúfam, že to vyrieši váš problém VBA "Pri chybe" nefunguje v programe Excel.

Prečítajte si viac: Dôvody a opravy chyby NAME v programe Excel (10 príkladov)

💬 Čo si treba zapamätať

✎ Pri chybe pokračovať ďalej v podstate ignoruje chybu a pokračuje na ďalší príkaz.

Excel zachytáva a ukladá chyby počas behu v objekte Err. Keď použijeme Pri chybe pokračovať ďalej vymaže vlastnosti objektu Err.

Môžete vypnúť Pri chybe pokračovať ďalej v kóde VBA v programe Excel pridaním príkazu On Error GoTo 0 vyhlásenie.

Záver

Na záver dúfam, že tento návod vám poskytol časť užitočných vedomostí o používaní Pri chybe pokračovať ďalej v programe Excel VBA. Odporúčam vám naučiť sa všetky tieto pokyny a aplikovať ich na váš súbor údajov. Stiahnite si cvičný zošit a vyskúšajte si ich sami. Neváhajte tiež poskytnúť spätnú väzbu v sekcii komentárov. Vaša cenná spätná väzba nás motivuje k vytváraniu takýchto návodov.

Nezabudnite si pozrieť našu webovú stránku Exceldemy.com pre rôzne problémy a riešenia súvisiace s programom Excel.

Učte sa nové metódy a neustále sa rozvíjajte!

Hugh West je veľmi skúsený tréner a analytik Excelu s viac ako 10-ročnými skúsenosťami v tomto odvetví. Má bakalársky titul v odbore účtovníctvo a financie a magisterský titul v odbore Business Administration. Hugh má vášeň pre vyučovanie a vyvinul jedinečný vyučovací prístup, ktorý sa dá ľahko sledovať a pochopiť. Jeho odborné znalosti Excelu pomohli tisíckam študentov a profesionálov na celom svete zlepšiť svoje zručnosti a vyniknúť vo svojej kariére. Hugh sa prostredníctvom svojho blogu delí o svoje znalosti so svetom a ponúka bezplatné výukové programy Excelu a online školenia, ktoré jednotlivcom a firmám pomôžu naplno využiť ich potenciál.