VBA Exit Sub | Pokud nejsou splněny podmínky, ukončete podproces VBA

Procedura ukončení VBA aplikace Excel VBA

Příkaz Exit Sub ukončí podproces dříve než definované řádky kódů VBA. Abychom však ukončili podproces, musíme použít nějaký logický test.

Postavme to jednoduše.

 Sub MacroName () '...' Some code here '... Exit Sub' Exit the Sub without executing further lines of code below '...' This code will be ignored '... End Sub 

Příklady

Tuto šablonu VBA Exit Sub Excel si můžete stáhnout zde - VBA Exit Sub Excel Šablona

Příklad č. 1

Pro lepší příklad se podívejte na níže uvedený kód.

Kód:

 Sub Exit_Example1 () Dim k As Long Pro k = 1 až 10 buněk (k, 1). Hodnota = k Další k Konec Sub 

Výše uvedený kód vloží sériová čísla od 1 do 10 do buněk A1 až A10.

Nyní chci vložit pouze 5 sériových čísel a jakmile se hodnota proměnné „k“ stane 6, chci sub opustit.

K tomu budu muset přidat logický test v aplikaci Excel jako 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 'Jakmile je hodnota k 6, bude ignorovat všechny kódy a opustí buňky (k, 1). Hodnota = k Další k Konec Sub 

Nyní spusťte kód řádek po řádku. Stisknutím klávesy F8 zahájíte řízení.

Od této chvíle je hodnota k nulová.

Chcete-li změnit hodnotu k na 1, stiskněte ještě jednou klávesu F8.

Hodnota k je tedy 1, náš kód stále běží a vloží 1 do buňky A1. Takto pokračujte ve smyčce, dokud se hodnota k nestane 6.

Nyní je hodnota k 6 a řádek kódu se chystá provést náš logický test k ukončení podprocesu. Pokud stisknu klávesu F8 ještě jednou, rovnou opustí celý dílčí postup.

Jak vidíme, zvýraznilo slovo „Exit Sub“ . Po stisknutí klávesy F8 opustí podproces bez přechodu na slovo „End Sub“ .

Příklad č. 2 - Při chybě Ukončete podproces

Můžeme také podprogram ukončit, když dostaneme chybové hodnoty. Zvažte například níže uvedená data dělení čísla 1 od čísla 2.

Níže je uveden kód pro rozdělení dvou čísel.

Kód:

 Sub Exit_Example2 () Dim k As Long Pro k = 2 až 9 buněk (k, 3). Hodnota = buňky (k, 1). Hodnota / buňky (k, 2). Hodnota Další k Konec Sub 

Jak víme, nemůžeme vydělit žádné číslo nulou. Takže pokud se o to pokusíme, dostaneme chybu jako Run Time Error '11': Division By Zero.

Abychom tomu zabránili, jakmile narazíme na jakoukoli chybu, zmíním své makro k okamžitému ukončení podprocesu. Jedním z takových případů je níže uvedený kód.

Kód:

 Sub Exit_Example2 () Dim k As Long For k = 2 až 9 On Error GoTo ErrorHandler Cells (k, 3). Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub End Sub 

Ve výše uvedeném příkladu jsem zmínil prohlášení „On Error Goto ErrorHandler“. Zde je štítek, který jsem přiřadil, slovo ErrorHandler. Pokud vidíte ve spodní části kódu, uvedl jsem štítek jako

ErrorHandler: Exit Sub 

Jakmile tedy kód narazí na chybu, stiskne kód, aby přeskočil na štítek, a štítek má příkaz „Exit Sub“, takže podproces ukončí.

Nyní spustím kód, vypočítá rozdělení, dokud nenajde chybu.

Jak vidíte v buňce C7, narazila na chybu jako „Rozdělení nulou“, takže opustila podproces. Bez informování uživatele o ukončení podprocesu je vždy nebezpečná věc. Abychom uživatele o chybě informovali, můžeme přidat jednu malou schránku se zprávou.

Kód:

 Sub Exit_Example2 () Dim k As Long For k = 2 až 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Došlo k chybě a chyba je: „& vbNewLine & Err.Popis Exit Sub End Sub 

Výše uvedený kód zobrazí chybovou zprávu a poté podprogram ukončí. Při spuštění kódu, pokud dojde k chybě, se zobrazí okno se zprávou ve VBA, jak je uvedeno níže.

Jedná se spíše o spolehlivý způsob ukončení dílčího postupu.