Ako ignorovať chyby pomocou VBA pri chybe Obnoviť ďalšie vyhlásenie?

Excel VBA pri chybe Pokračovať ďalej

VBA On Error Resume Next je vyhlásenie obsluhy chýb. Ak sa chyba vyskytne počas spustenia kódu, namiesto zobrazenia chyby pri pokračovaní v ďalšom riadku kódu ignorovaním chybového hlásenia môžete použiť toto vyhlásenie.

Tí, ktorí pravidelne píšu kódy v programe Excel VBA, vedia, že sa im môžu vyskytnúť chyby aj po napísaní zručných kódov, ale túto chybu chcú ignorovať a pokračovať v ďalších riadkoch kódu. Jedným typickým príkladom zobrazenia chybovej správy je, keď funkcia pracovného hárka VLOOKUP nenájde vyhľadávaciu hodnotu z poľa tabuľky. Nevráti chybu # N / A; skôr to vyhodí chybu. Ako „Nedá sa získať vlastnosť VLOOKUP triedy funkcií pracovného hárka.“

Ak neviete, prečo sa nám zobrazuje táto chyba, je veľmi ťažké chybu opraviť. Vo VBA máme funkciu nazvanú „ On Error Resume Next “.

Čo ďalej vo VBA bude pokračovať pri chybe?

Existujú určité oblasti ako kóder. Určite budeme vedieť, že sa zobrazí chybové hlásenie, ale aby sme mohli pokračovať v kódovaní, musíme túto chybu ignorovať, takže o tom, ako túto chybu ignorovať, sú bežné pochybnosti.

Použitím príkazu VBA On Error Resume Next môžeme chybu ignorovať a pokračovať v ďalšom riadku kódu.

Príklad č

Predpokladajme, že máte veľa pracovných listov a niektoré z nich skrývate v rámci projektu VBA. Napríklad nižšie uvádzam pracovné listy, ktoré mám v pracovnom hárku.

Napísal som kódy, ktoré skryjú hárky „Predaj a zisk“, a nižšie je uvedený kód.

Kód:

Sub On_Error () Worksheets ("Sales"). Visible = xlVeryHidden Worksheets ("Profit 2019"). Visible = xlVeryHidden Worksheets ("Profit"). Visible = xlVeryHidden End Sub

Teraz začnem spúšťať kódový riadok po riadku pomocou klávesu F8 .

Ak stlačím kláves F8 ešte raz, skryje sa hárok s názvom „ Predaj “.

Teraz stlačte kláves F8 ešte raz a uvidíte, čo sa stane.

Dostali sme chybu „Dolný index mimo rozsah“, pretože súčasný riadok kódu hovorí nižšie.

Pracovné listy („Zisk 2019“). Viditeľné = xlVeryHidden

Pokúša sa skryť pracovný hárok s názvom „ Zisk 2019 “, ale neexistuje pracovný hárok s názvom „Zisk 2019“.

V týchto prípadoch, ak hárok v zošite neexistuje, musíme chybu ignorovať a pokračovať v spúšťaní kódu ignorovaním chyby „Dolný index mimo rozsahu“.

Nasledujúci riadok v kóde hovorí

Pracovné listy („Zisk“). Viditeľné = xlVeryHidden

Tento pracovný hárok v tomto zošite existuje, takže bez ignorovania chyby nemôžeme prejsť na tento riadok kódu.

Ak chcete túto chybu ignorovať, musíme pridať vyhlásenie „Pri chybe pokračovať ďalej“.

Kód:

Sub On_Error () pri chybe Obnoviť ďalšie pracovné hárky („Predaj“). Viditeľné = xlVeryHidden pracovné hárky („Zisk 2019“). Visible = xlVeryHidden pracovné hárky („Zisk“). Viditeľné = xlVeryHidden Koniec Sub

Ako vidíte vyššie, pridal som vyhlásenie do hornej časti kódu pred začatím ktoréhokoľvek z riadkov. Teraz spustite kód a uvidíte, čo sa stane.

Teraz som v rade, ktorá predtým dostala chybu, stlačte kláves F8 a uvidíte, čo sa stane.

Preskočil som na ďalší riadok kódu bez zobrazenia chyby kvôli vyhláseniu, ktoré sme pridali na začiatok, čo je vyhlásenie VBA „On Error Resume Next“.

Príklad č

Teraz uvidíme, ako použiť toto vyhlásenie s ďalším príkladom. Pozrite sa na nasledujúcu dátovú štruktúru tohto príkladu.

Nad prvou tabuľkou máme dve tabuľky, ktoré majú v druhej tabuľke názov Emp a ich platové podrobnosti, a máme iba Emp Name, takže pomocou VLOOKUP musíme načítať platové údaje z tabuľky na ľavej strane.

Nižšie je uvedený kód, ktorý som napísal, aby som získal podrobnosti.

Kód:

Sub On_Error1 () Dim k As Long For k = 2 to 8 Cells (k, 6). Value = WorksheetFunction.VLookup (Cells (k, 5), Range ("A: B"), 2, 0) Next k End Sub

Teraz spustite kód po riadku a uvidíte, čo sa stane.

Po spustení prvého kódu bunky sme dostali výsledok pre prvého zamestnanca. To isté opakujte aj pre druhého zamestnanca.

Tentokrát sme dostali chybové hlásenie. Pozrime sa na druhé meno zamestnanca v tabuľke.

The second employee name is “Gayathri,” but this name doesn’t not exists in the first table, so the VBA VLOOKUP function doesn’t return “#N/A” error when the VLOOKUP doesn’t find the lookup value from the table; rather, it gives the above error message.

Our aim is if the employee name doesn’t find in the table, then we need an empty cell for that employee and ignore the error and give results for the remaining names.

We need to add the “On Error Resume Next” statement inside the loop.

Code:

Sub On_Error1() Dim k As Long For k = 2 To 8 On Error Resume Next Cells(k, 6).Value = WorksheetFunction.VLookup(Cells(k, 5), Range("A:B"), 2, 0) Next k End Sub

Now run the code and see the result.

Dva mená zamestnancov, „ Gayathri a Karanveer “, nie sú na zozname, takže v týchto kódoch riadkov sa musela vyskytnúť chyba, pretože sme pridali vyhlásenie obsluhy chýb „ On Error Resume Next “, tento riadok kódu ignoroval a pokračoval pre nasledujúceho zamestnanca.

Na čo je potrebné pamätať tu

  • „On Error Resume Next“ je vyhlásenie obsluhy chyby, keď potrebujeme známu chybu ignorovať.
  • Ak chcete chybové hlásenie ignorovať iba pre konkrétnu sadu kódov, zatvorte nasledujúce vyhlásenie o chybe pri obnovení pridaním vyhlásenia „ Pri chybe GoTo 0 “.

Zaujímavé články...