Ve VBA můžete ukončit dílčí nebo funkci pomocí Ukončit dílčí nebo Funkce ukončení příkazy.
1 | Ukončit dílčí |
1 | Funkce ukončení |
Když dojde k provedení kódu Ukončit dílčí nebo Funkce ukončení, ukončí dílčí funkci nebo funkci a bude pokračovat v jakémkoli jiném spuštění kódu.
Pokud se chcete dozvědět, jak ukončit Sub při chybě, klikněte na tento odkaz: VBA On Error Exit Sub
Pokud se chcete dozvědět, jak ukončit provádění celého kódu, klikněte na tento odkaz: Konec VBA
Ukončete Sub ve VBA
Na příkladu uvidíte, co se stane, když použijeme Ukončit dílčí příkaz v sub. Vytvořili jsme Sub ExitSub, který má Ukončit dílčí povel uvnitř. SubCallExitSub tomu říká Sub. Zde je kód:
123456789101112131415161718 | Soukromý Sub ExitSub ()Dim i As IntegerPro i = 1 až 10Pokud i = 5 PakUkončit dílčíMsgBox „Hodnota i je“ & iKonec IfPříště jáEnd SubPrivate Sub CallExitSub ()Volejte ExitSubMsgBox „Exit Sub“End Sub |
V ExitSub, nejprve zadáme For Loop, pokud je hodnota i menší než 10:
123 | Pro i = 1 až 10Příště já |
Poté zkontrolujeme, zda je hodnota i rovna 5, pomocí příkazu If. Pokud je hodnota 5, chceme Sub opustit a vrátit pole Zpráva s hodnotou i:
1234 | Pokud i = 5 PakUkončit dílčíMsgBox „Hodnota i je“ & iKonec If |
Pokud podmínka není splněna, následující příkaz zvýší i o 1 a znovu vstoupí do smyčky For:
1 | Příště já |
V CallExitSub, nejprve zavoláme Sub ExitSub:
1 | Volejte ExitSub |
Poté vrátíme pole Zpráva:
1 | MsgBox „Exit Sub“ |
Pokud spustíte CallExitSub, nejprve zavolá ExitSub. Pokud tento kód spustíte v režimu ladění, uvidíte, že projde smyčkou 5krát. V 5th iterace, hodnota proměnné i se stane 5 a kód vstoupí do těla If. Nyní Sub ExitSub je ukončen a vrácen do CallExitSub. Další řádek je MsgBox „Exit Sub“:
Jak vidíte, ExitSub je opuštěno hned poté Ukončit dílčí příkaz, takže MsgBox „Hodnota i je“ & i nebude nikdy popraven.
Ukončete funkci ve VBA
Ukončení funkce ve VBA je podobné opuštění Sub, pouze příkaz je Funkce ukončení. V příkladu jsme vytvořili soubor ExitFunc který vrací celé číslo. Sub CallExitFunction volá tuto funkci. Zde je kód:
1234567891011121314151617181920 | Soukromá funkce ExitFunc () jako celé čísloDim i As IntegerPro i = 1 až 10Pokud i = 5 PakExitFunc = iFunkce ukončeníKonec IfPříště jáKoncová funkcePrivate Sub CallExitFunction ()Dim intFunc jako celé číslointFunc = ExitFunction ()MsgBox "Hodnota intFunc je" & intFuncEnd Sub |
V ExitFunc, nejprve zadáme For Loop, pokud je hodnota i menší než 10:
123 | Pro i = 1 až 10Příště já |
Poté zkontrolujeme, zda je hodnota i rovna 5, pomocí příkazu If. Pokud je hodnota 5, přiřadíme výsledku funkce hodnotu i a funkci ukončíme:
1234 | Pokud i = 5 PakExitFunc = iFunkce ukončeníKonec If |
Pokud podmínka není splněna, následující příkaz zvýší i o 1 a znovu vstoupí do smyčky For:
1 | Příště já |
V CallExitFunction, nejprve voláme funkci ExitFunc: K tomu musíme deklarovat proměnnou intFunc zadejte celé číslo a přiřaďte výsledek ExitFunc fungovat na to:
123 | Dim intFunc jako celé číslointFunc = ExitFunction () |
Poté vrátíme pole Zpráva s hodnotou intFunc:
1 | MsgBox "Hodnota intFunc je" & intFunc |
Pokud spustíte CallExitFunction, nejprve zavolá funkci ExitFunc. Pokud tento kód spustíte v režimu ladění, uvidíte, že projde smyčkou 5krát. V 5th iterace, hodnota proměnné i se stane 5 a kód vstoupí do těla If. Nyní hodnota ExitFunc se stane i a funkce se ukončí a vrátí se do CallExitFunction. Další řádek je MsgBox „Hodnota intFunc je“ & intFunc: