VBA Exit Sub - Wyjdź z podprocedury VBA, jeśli warunki nie są spełnione

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 () '…' Tu jakiś kod '… Exit Sub' Wyjście z Sub bez wykonywania kolejnych wierszy kodu poniżej '…' Ten kod zostanie zignorowany '… End Sub

Przykłady

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 do 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.

Będę musiał dodać test logiczny w programie Excel jako JEŻELI k = 6 Następnie zamknij 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.

Na razie 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, od razu przejdzie tylko cała procedura podrzędna.

Jak widać, podświetliło słowo „Exit Sub”. Po naciśnięciu klawisza F8 spowoduje 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 marce jako

ErrorHandler: Zakończ Sub

Gdy tylko kod napotka błąd, wypchnie kod, aby przeskoczyć do etykiety, a marka ma instrukcję „Exit Sub”, aby opuścić podprocedurę.

Teraz uruchomię kod; obliczy podział, dopóki nie znajdzie błędu.

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 powiadomić użytkownika o błędzie, możemy dołączyć jedno małe okno 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 pokaże komunikat o błędzie, a następnie zakończy podprocedurę. Podczas uruchamiania kodu, jeśli wystąpi błąd, wyświetli okno komunikatu w VBA, jak poniżej.

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

Interesujące artykuły...