Výstupný text VBA Ak nie sú splnené podmienky, ukončite podproces VBA

Procedúra výstupu VBA programu Excel VBA

Príkaz Exit Sub ukončí podproces skôr, ako sú definované riadky kódov VBA. Na ukončenie podprocesu však musíme použiť nejaký logický test.

Zostrojme to jednoducho.

 Sub MacroName () '...' Sem nejaký kód '... Exit Sub' Ukončiť Sub bez vykonania ďalších riadkov kódu pod '...' Tento kód bude ignorovaný '... End Sub 

Príklady

Túto šablónu VBA Exit Sub Excel si môžete stiahnuť tu - Šablóna VBA Exit Sub Excel

Príklad č

Lepší príklad nájdete v nižšie uvedenom kóde.

Kód:

 Sub Exit_Example1 () Dim k As Long For k = 1 až 10 buniek (k, 1). Hodnota = k Next k End Sub 

Vyššie uvedený kód vloží sériové čísla od 1 do 10 do buniek A1 až A10.

Teraz chcem vložiť iba 5 sériových čísel a hneď ako sa stane hodnota premennej „k“ 6 chcem opustiť sub.

Za týmto účelom budem musieť pridať logický test v programe Excel ako IF k = 6 Then Exit Sub .

Kód:

 Sub Exit_Example1 () Dim k As Long For k = 1 až 10 If k = 6 Then Exit Sub 'Akonáhle sa hodnota k stane 6, bude ignorovať všetky kódy a opustí bunky (k, 1). Hodnota = k Ďalšia k Koniec Sub 

Teraz spustite kód po riadku. Stlačením klávesu F8 zahájite konanie.

Odteraz je hodnota k nulová.

Ak chcete zmeniť hodnotu k na 1, stlačte kláves F8 ešte raz.

Takže hodnota k je 1, náš kód beží ďalej a do bunky A1 vloží 1. Takto stále bežte v slučke, kým sa hodnota k nezmení na 6.

Teraz je hodnota k 6 a riadok kódu sa chystá vykonať náš logický test na ukončenie podprocesu. Ak stlačím kláves F8 ešte raz, rovno sa ukončí iba celý vedľajší postup.

Ako vidíme, zvýraznilo slovo „Exit Sub“ . Po stlačení klávesu F8 sa podprogram ukončí bez zobrazenia slova „End Sub“ .

Príklad č. 2 - Pri chybe Ukončite podproces

Podproces môžeme tiež opustiť, keď dostaneme chybové hodnoty. Zvážte napríklad nižšie uvedené údaje o rozdelení čísla 1 od čísla 2.

Nižšie je uvedený kód na získanie rozdelenia dvoch čísel.

Kód:

 Sub Exit_Example2 () Dim k ako dlho pre k = 2 až 9 buniek (k, 3). Hodnota = bunky (k, 1). Hodnota / bunky (k, 2). Hodnota Nasledujúca k Koniec Sub 

Ako vieme, nemôžeme deliť žiadne číslo nulou. Takže ak sa o to pokúsime, dostaneme chybu ako Run Time Error '11': Division By Zero.

Aby sme sa tomu vyhli, akonáhle narazíme na akúkoľvek chybu, spomeniem svoje makro na okamžité ukončenie podprocesu. Jedným z takýchto prípadov je kód uvedený nižšie.

Kód:

 Sub Exit_Example2 () Dim k ako dlho pre k = 2 až 9 pri chybe GoTo ErrorHandler Cells (k, 3). Value = Cells (k, 1). Value / Cells (k, 2). Value Next k ErrorHandler: Exit Sub Koniec Sub 

Vo vyššie uvedenom príklade som spomenul tvrdenie „On Error Goto ErrorHandler“. Tu je slovo ErrorHandler štítok, ktorý som priradil. Ak vidíte v spodnej časti kódu, uviedol som štítok ako

ErrorHandler: Exit Sub 

Akonáhle teda kód narazí na chybu, bude tlačiť na kód, aby preskočil na štítok a štítok má vyhlásenie „Exit Sub“, takže podprogram ukončí.

Teraz spustím kód, bude počítať delenie, kým nenájde chybu.

Ako vidíte v bunke C7, narazila na chybu ako „Delenie nulou“, takže opustila podproces. Bez informovania používateľa, ktorý ukončí subproces, je vždy nebezpečná vec. Aby sme používateľa informovali o chybe, môžeme zahrnúť jednu malú schránku so správou.

Kód:

 Sub Exit_Example2 () Dim k ako dlho pre k = 2 až 9 pri chybe GoTo ErrorHandler bunky (k, 3). Hodnota = bunky (k, 1). Hodnota / bunky (k, 2) .Hodnota Ďalej k ErrorHandler: MsgBox " Vyskytla sa chyba a chyba: „& vbNewLine & Err.Popis Exit Sub End Sub 

Vyššie uvedený kód zobrazí chybové hlásenie a potom ukončí podproces. Ak počas spustenia kódu dôjde k chybe, zobrazí sa okno správy vo formáte VBA, ako je uvedené nižšie.

Toto je spoľahlivejší spôsob ukončenia vedľajšieho postupu.