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 ExcelPrí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.