Chyba VBA pri chybe

VBA pri chybe je jednoduchá metóda na zvládnutie neočakávaných výnimiek v Exceli Macros.It je známe, že nemôžeme písať kód bez akejkoľvek chyby. Niekedy nám môže písanie veľkého kódu spôsobiť chybu aj v čase kompilácie. Aby sme sa vyhli tejto situácii, pridávame chybové hlásenie, ktoré nám namiesto správnej odpovede alebo chybového kódu zobrazí správu s chybovým kódom. Vyzeralo by to, že sme dostali výstup z nášho výpočtu, ale bude to kód chyby, ktorý sa vytlačí.

Ako používať Excel VBA na chybové hlásenie v programe Excel?

Vo VBA sú 3 spôsoby chyby. Poďme pochopiť rôzne spôsoby s niektorými príkladmi.

Príklad č. 1

Prvým typom chyby je chyba kompilácie kódu, ktorá nastane, keď je kód neohlásený alebo nemožný. Aby sme viac porozumeli, použijeme jednoduchý matematický výraz priepasti. Za týmto účelom prejdite do ponuky Vložiť VBA a vyberte modul, ako je to znázornené nižšie.

Teraz otvorte podkategóriu a pridajte ľubovoľný názov. Keď používame chybu On Error, pomenovali sme to isté.

 Sub OnError () End Sub 

Teraz definujte akékoľvek 2 alebo 3 celé čísla. Tu berieme X a Y ako celé čísla.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo. Sub 

Teraz, ako je uvedené vyššie, vypočítame deliace matematické vyjadrenie. Pre X vložíme znak do Numerátora a rozdelíme ho 0. A Y bude 20/2, čo sú celé čísla.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo X = Test / 0 Y = 20/2 End Sub 

Teraz spustite kód pomocou klávesu F5 alebo kliknutím na tlačidlo prehrávania, ako je uvedené nižšie. Dostaneme chybu run-time 6, ktorá zobrazuje chybu Text over number number.

Teraz, aby sme túto chybu zrušili, pridáme jeden riadok pri chybe pri pokračovaní ďalej pred tým, ako napíšeme matematický kód. Preskočí chybový kód, ale nebudeme môcť vidieť výsledok druhého matematického kódu. Toto skryje chybové hlásenie iba v prípade, keď sú rôzne nižšie uvedené riadky kódov. Teraz skúste spustiť aj kód.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo pri chybe Pokračovanie Ďalší X = Test / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Teraz, aby sme túto chybu zrušili, pridáme jeden riadok pri chybe pri pokračovaní ďalej pred tým, ako napíšeme matematický kód. Preskočí chybový kód, ale nebudeme môcť vidieť výsledok druhého matematického kódu. Toto skryje chybové hlásenie iba v prípade, keď sú rôzne nižšie uvedené riadky kódov. Teraz skúste spustiť aj kód.

Príklad č. 2

V tomto príklade uvážime matematické delenie, ktoré dáva nekonečný výsledok, ale pri kódovaní to bude výsledok # DIV / 0. Aby sme to demonštrovali, zvážime ešte jedno celé číslo Z spolu s X a Y v podkategórii, ako je uvedené nižšie.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo. Sub 

Teraz orámujte všetky celé čísla X, Y a Z matematickým vyjadrením delenia a vytlačte ich pomocou funkcie MsgBox vo VBA výsledku každého celého čísla.

Nižšie pre celé číslo X sme rozdelili 10 po 0, 20 po 2 a 30 po 4.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Teraz spustite kód pomocou klávesu F5 alebo ručne, ako je uvedené nižšie.

Ako vidíme na snímke vyššie, chyba run-time 11, čo znamená, že sa chyba týka čísla. Teraz, aby ste to prekonali, pridajte jeden riadok pri chybe pokračovať ďalej pred matematickým vyjadrením, ako je uvedené nižšie.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo pri chybe Pokračovanie Ďalší X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Teraz, keď spustíme kód, dostaneme nulu pre prvé celé číslo X a pre Y a Z dostaneme príslušné divízne odpovede, ako je uvedené nižšie.

Príklad č. 3

Druhý typ chyby sa objaví, keď v kóde zadáme nesprávne údaje. Z tohto dôvodu zvážime 3 celé čísla X, Y a Z otvorením podkategórie vo VBA, ako je uvedené nižšie.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo. Sub 

Teraz tiež zvážte rovnaké matematické rozdelenie, aké sme videli vo vyššie uvedenom príklade.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Ak spustíme kód, dostaneme rovnaké chybové hlásenie ako Chyba pri spustení 11.

Teraz, keď chcete túto chybu zrušiť, použite text On Error GoTo so slovom „“ Výsledok, aby ste preskočili chybové hlásenie a dostali výstup, ktorý funguje dobre, ako je to znázornené nižšie.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo pri chybe GoTo ZResult: X = 10/0 Y = 20/2 ZResult: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Teraz spustite kód znova. Získame rovnaký výsledok ako v predchádzajúcom príklade.

Pri chybe GoTo ZResult nám pomáha priamo preskočiť vyššie uvedené celé číslo výsledného bodu, ako sme to urobili pre celé číslo Z.

Príklad č. 4

Pri treťom type chyby, keď spustíme kód, a VBA nedokáže porozumieť riadku kódu. Toto je možné vykonať pomocou kódu On Error Resume Next spolu s MsgBox Err.Number . Zvážte rovnaké údaje, aké boli použité vo vyššie uvedených príkladoch. Znovu uvidíme rovnaké 3 celé čísla X, Y a Z, ako je uvedené nižšie.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo. Sub 

A na vytlačenie výstupného výsledku povolte výstupné schránky pre všetky celé čísla.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Teraz, keď spustíme kompletný kód, dostaneme chybové hlásenie o matematickej chybe Chyba času spustenia 11.

Teraz na odstránenie tejto chyby použijeme príkaz On Error Resume Next.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo pri chybe Pokračovanie Ďalší X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

A spustite kód. Takto získate výsledok na platnej matematickej linke, ako je uvedené nižšie.

Teraz pridajte kódový riadok ZResult pred matematické vyjadrenie celočíselného delenia Z a pridajte na koniec kódu kódový riadok MsgBox Err.Number, ako je to znázornené nižšie.

 Sub OnError () Dim X ako celé číslo, Y ako celé číslo, Z ako celé číslo pri chybe Pokračovanie Ďalší X = 10/0 Y = 20/2 ZVýsledok: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub Sub 

Teraz spustite kód pomocou klávesu F5 alebo stlačením tlačidla prehrávania, ako je uvedené nižšie.

Ako vidíme na vyššie uvedených snímkach obrazovky. Prvé okno správy má hodnotu 0, ktorá má prednosť nesprávnemu matematickému výrazu. 2. a 3. výsledok majú výsledok delenia celých čísel Y a Z. A posledná schránka správ má chybový kód 11 runtime, čo je pravdepodobne chybový kód deliacich výrazov X integer.

Výhody VBA pri chybe

  • Môžeme vypočítať akýkoľvek matematický vzorec, aj keď je nesprávny.
  • Pre väčšie kódovacie štruktúry, kde sú šance alebo majú chybu, môže použitie týchto metód poskytnúť správny výsledok aj medzi riadkami kódov.
  • To dáva lepší výsledok v porovnaní s výsledkami získanými z bežných výpočtov Excelu.

Čo je potrebné pamätať

  • Súbor vždy uložte do súboru Excel s povoleným makrom, aby sme mohli vytvorený kód VBA používať viackrát a viackrát.
  • Pred implementáciou s akýmikoľvek excelovými požiadavkami vždy zostavte napísaný kód.
  • Ak je to potrebné, priraďte napísaný kód každému tlačidlu, aby sme naň mohli rýchlo kliknúť a spustiť ho.

Túto šablónu VBA On Error Excel si môžete stiahnuť tu - VBA On Error Excel Template

Odporúčané články

Toto bol sprievodca Excelom VBA pri chybe. Tu sme diskutovali o tom, ako používať vyhlásenie o chybe VBA spolu s niekoľkými praktickými príkladmi a šablónou programu Excel na stiahnutie. Môžete si tiež prečítať naše ďalšie navrhované články -

  1. Ako používať funkciu VBA TRIM?
  2. Formát čísla vo VBA
  3. Sprievodca programom Excel VBA
  4. Ako používať funkciu vyhľadávania VBA?

Kategórie: