VBA Exit Sub

Podprocedura wyjścia Excel VBA

Instrukcja Exit Sub kończy podprocedurę wcześniej niż zdefiniowane wiersze kodów VBA. Jednak, aby wyjść z podprocedury, musimy zastosować jakiś test logiczny.

Skonstruujmy to w prostych słowach.

 Sub MacroName () '...' Trochę kodu '... Exit Sub' Wyjście z Sub bez wykonywania kolejnych wierszy kodu poniżej '...' Ten kod zostanie zignorowany '... End Sub 

Przykłady

Możesz pobrać ten szablon VBA Exit Sub Excel tutaj - VBA Exit Sub Excel Template

Przykład 1

Aby uzyskać lepszy przykład, spójrz na poniższy kod.

Kod:

 Sub Exit_Example1 () Dim k As Long For k = 1 to 10 Cells (k, 1) .Value = k Next k End Sub 

Powyższy kod wstawi numery seryjne od 1 do 10 w komórkach A1 do A10.

Teraz chcę wstawić tylko 5 numerów seryjnych i gdy tylko wartość zmiennej „k” wyniesie 6, chcę wyjść z sub.

W tym celu będę musiał dodać test logiczny w programie Excel jako JEŻELI k = 6 Następnie wyjdź z Sub .

Kod:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Gdy tylko k wartość osiągnie 6, zignoruje wszystkie kody i wyjdzie z komórek (k, 1). Wartość = k Next k End Pod 

Teraz uruchom kod linia po linii. Naciśnij klawisz F8, aby rozpocząć postępowanie.

Obecnie wartość k wynosi zero.

Aby zmienić wartość k na 1, naciśnij klawisz F8 jeszcze raz.

Więc wartość k wynosi 1, nasz kod działa dalej i wstawi 1 do komórki A1. W ten sposób uruchamiaj pętlę, aż wartość k wyniesie 6.

Teraz wartość k wynosi 6, a wiersz kodu za chwilę wykona nasz test logiczny, aby zakończyć podprocedurę. Jeśli naciśnę klawisz F8 jeszcze raz, spowoduje to natychmiastowe wyjście tylko z całej procedury podrzędnej.

Jak widzimy, podświetliło słowo „Exit Sub” . Naciśnięcie klawisza F8 powoduje wyjście z podprocedury bez przechodzenia do słowa „End Sub” .

Przykład 2 - w przypadku błędu wyjście z podprocedury

Możemy również wyjść z podprocedury, gdy otrzymamy wartości błędów. Na przykład rozważ poniższe dane dotyczące podziału liczby1 od liczby 2.

Poniżej znajduje się kod do podziału dwóch liczb.

Kod:

 Sub Exit_Example2 () Dim k As Long For k = 2 to 9 Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k End Sub 

Jak wiemy, nie możemy podzielić żadnej liczby przez zero. Więc jeśli spróbujemy to zrobić, otrzymamy błąd jako Run Time Error '11': Division By Zero.

Aby tego uniknąć, gdy tylko napotkamy jakiś błąd, wspomnę o moim makrze, aby wyjść z podprocedury ze skutkiem natychmiastowym. Poniższy kod jest jednym z takich przypadków.

Kod:

 Sub Exit_Example2 () Dim k As Long For k = 2 do 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub Napis końcowy 

W powyższym przykładzie wspomniałem o stwierdzeniu „On Error Goto ErrorHandler”. Tutaj słowo ErrorHandler jest etykietą, którą przypisałem. Jeśli widzisz na dole kodu, wspomniałem o etykiecie jako

ErrorHandler: Zakończ Sub 

Tak więc, gdy tylko kod napotka błąd, wypchnie kod, aby przeskoczyć do etykiety, a etykieta zawiera instrukcję „Exit Sub”, więc zakończy podprocedurę.

Teraz uruchomię kod, będzie obliczał podział, aż znajdzie błąd.

Jak widać w komórce C7 napotkał błąd „Dzielenie przez zero”, więc zakończył podprocedurę. Wyjście z podprocedury bez informowania użytkownika jest zawsze niebezpieczne. Aby poinformować użytkownika o błędzie, możemy dołączyć jedno małe okienko komunikatu.

Kod:

 Sub Exit_Example2 () Dim k As Long For k = 2 do 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Wystąpił błąd i jest to: „& vbNewLine & Err.Description Exit Sub End Sub 

Powyższy kod wyświetli komunikat o błędzie, a następnie zakończy podprocedurę. Podczas uruchamiania kodu, jeśli wystąpi błąd, wyświetli okno komunikatu w języku VBA, jak poniżej.

Jest to bardziej niezawodny sposób wychodzenia z procedury podrzędnej.