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 () „…„ Nějaký kód zde “… Exit Sub„ Opuštění Sub bez provedení dalších řádků kódu níže „…“ Tento kód bude ignorován „… End Sub

Příklady

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“ změní na 6, chci sub opustit.

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.

Takže hodnota k je 1, náš kód 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, přejde to přímo pouze k celé dílčí proceduře.

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 značku jako

ErrorHandler: Exit Sub

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

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

Jak vidíte v buňce C7, došlo k chybě jako „Dě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ávami.

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ě, zobrazí se 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.

Zajímavé články...