I VBA kan du avsluta en sub eller funktion genom att använda Avsluta Sub eller Avsluta funktion kommandon.
1 | Avsluta Sub |
1 | Avsluta funktion |
När körningen av koden kommer till Avsluta Sub eller Avsluta funktion, kommer den att avsluta en del eller funktion och fortsätta med annan kodkörning.
Om du vill lära dig hur du avslutar en Sub on Error, klicka på den här länken: VBA On Error Exit Sub
Om du vill lära dig hur du avslutar en hel kodkörning, klicka på den här länken: VBA End
Avsluta en Sub i VBA
Du kommer att se i exemplet vad som händer när vi använder Avsluta Sub kommando i en sub. Vi skapade en Sub ExitSub, som har Avsluta Sub kommando inuti. SubCallExitSub kallar detta Sub. Här är koden:
123456789101112131415161718 | Private Sub ExitSub ()Dim i As IntegerFör i = 1 till 10Om i = 5 DåAvsluta SubMsgBox "Värdet på i är" & iAvsluta omNästa iAvsluta SubPrivate Sub CallExitSub ()Ring ExitSubMsgBox "Exit Sub"Avsluta Sub |
I ExitSub, anger vi först For Loop om värdet på i är mindre än 10:
123 | För i = 1 till 10Nästa i |
Efter det kontrollerar vi om värdet på i är lika med 5, med hjälp av kommandot If. Om värdet är 5 vill vi lämna Sub och returnera meddelanderutan med värdet i:
1234 | Om i = 5 DåAvsluta SubMsgBox "Värdet på i är" & iAvsluta om |
Om villkoret inte är uppfyllt ökar följande sats i med 1 och går in i For -slingan igen:
1 | Nästa i |
I CallExitSub, vi kallar först Sub ExitSub:
1 | Ring ExitSub |
Efter det skickar vi tillbaka meddelanderutan:
1 | MsgBox "Exit Sub" |
Om du kör CallExitSub, det kommer först att ringa till ExitSub. Om du kör den här koden i felsökningsläget ser du att den kommer att gå igenom slingan 5 gånger. I 5th iteration, värdet av variabeln i blir 5 och koden går in i If -kroppen. Nu är Sub ExitSub avslutas och återlämnas till CallExitSub. Nästa rad är MsgBox “Exit Sub”:
Som du kan se, ExitSub lämnas direkt efter Avsluta Sub kommando, så MsgBox “Värdet på i är” & i kommer aldrig att utföras.
Avsluta en funktion i VBA
Att lämna en funktion i VBA liknar att lämna en Sub, bara kommandot är Avsluta funktion. I exemplet skapade vi ExitFunc som returnerar ett heltal. Sub CallExitFunction kallar denna funktion. Här är koden:
1234567891011121314151617181920 | Privat funktion ExitFunc () som heltalDim i As IntegerFör i = 1 till 10Om i = 5 DåExitFunc = iAvsluta funktionAvsluta omNästa iAvsluta funktionPrivate Sub CallExitFunction ()Dim intFunc som heltalintFunc = ExitFunction ()MsgBox "Värdet på intFunc är" & intFuncAvsluta Sub |
I ExitFunc, anger vi först For Loop om värdet på i är mindre än 10:
123 | För i = 1 till 10Nästa i |
Efter det kontrollerar vi om värdet på i är lika med 5, med hjälp av kommandot If. Om värdet är 5 tilldelar vi värdet på i till funktionsresultatet och lämnar funktionen:
1234 | Om i = 5 DåExitFunc = iAvsluta funktionAvsluta om |
Om villkoret inte är uppfyllt ökar följande sats i med 1 och går in i For -slingan igen:
1 | Nästa i |
I CallExitFunction, vi kallar först funktionen ExitFunc: För att göra det måste vi deklarera variabeln intFunc skriv heltal och tilldela resultatet av ExitFunc fungerar till det:
123 | Dim intFunc som heltalintFunc = ExitFunction () |
Efter det returnerar vi meddelanderutan med värdet intFunc:
1 | MsgBox "Värdet på intFunc är" & intFunc |
Om du kör CallExitFunction, det kommer först att kalla funktionen ExitFunc. Om du kör den här koden i felsökningsläget ser du att den kommer att gå igenom slingan 5 gånger. I 5th iteration, värdet av variabeln i blir 5 och koden går in i If -kroppen. Nu är värdet på ExitFunc blir i och funktionen avslutas och återgår till CallExitFunction. Nästa rad är MsgBox ”Värdet på intFunc är” och intFunc: