VBA Exit Sub 과 Exit Function
VBA에서 서브프로시저 또는 함수 종료 명령은 Exit Sub 또는 Exit Function 을 사용하여 수행할 수 있습니다.
Exit Sub
Exit Function
코드 실행이 Exit Sub 또는 Exit Function, 에 도달하면 하위 프로시저나 함수를 종료하고 이후 코드실행을 계속합니다.
오류 시 하위 프로시저를 종료하는 방법을 알아보려면 이 링크를 클릭하세요: VBA On Error Exit Sub
전체 코드 실행을 종료하는 방법을 알아보려면 이 링크를 클릭하세요: VBA End
VBA에서 하위 프로시저 종료하기
아래 예제에서 Sub에서 Exit Sub 명령을 사용하면 어떤 일이 발생하는지 확인할 수 있습니다. Exit Sub 명령이 포함된 Sub ExitSub를 만들었습니다. Sub CallExitSub는 이 Sub를 호출합니다. 다음은 코드입니다:
Private Sub ExitSub()
Dim i As Integer
For i = 1 To 10
If i = 5 Then
Exit Sub
MsgBox "The value of i is" & i
End If
Next i
End Sub
Private Sub CallExitSub()
Call ExitSub
MsgBox "Exit Sub"
End Sub
ExitSub 프로시저에서 우선 i 값이 10보다 작으면 For 반복문에 들어가도록 코드를 입력합니다:
For i = 1 To 10
Next i
그런 다음 If 명령을 사용하여 i의 값이 5와 같은지 확인합니다. 값이 5이면 프로시저를 종료하고 i 값이 포함된 메시지 박스를 반환하도록 의도하여 코드를 작성합니다:
If i = 5 Then
Exit Sub
MsgBox "The value of i is" & i
End If
조건이 충족되지 않으면 다음 구문을 통해 i를 1씩 증가시키고 다시 For 반복문에 들어갑니다:
Next i
CallExitSub프로시저에서는 우선 ExitSub 프로시저를 호출합니다:
Call ExitSub
그런다음 메시지박스를 출력합니다:
MsgBox "Exit Sub"
CallExitSub를 실행하면 먼저 ExitSub를 호출합니다. 디버그 모드에서 이 코드를 실행하면 루프를 5번 반복하는 것을 볼 수 있습니다. 5번째 반복에서 변수 i의 값은 5가 되고 코드가 If 문에 진입합니다. 이제 ExitSub 프로시저가 종료되고 CallExitSub로 돌아갑니다. 마지막으로 실행될 코드는 MsgBox “Exit Sub”입니다:
보시다시피 ExitSub 프로시저는 Exit Sub 명령 직후에 종료되므로 MsgBox “The value of i is” & i 는 실행되지 않습니다.
VBA에서 함수 종료하기
VBA에서 함수를 종료하는 것은 Sub 프로시저를 종료하는 방법과 유사하지만 명령어가 Exit Function이라는 점만 다릅니다. 이 예제에서는 정수를 반환하는 ExitFunc를 만들었습니다. :
Private Function ExitFunc() As Integer
Dim i As Integer
For i = 1 To 10
If i = 5 Then
ExitFunc = i
Exit Function
End If
Next i
End Function
Private Sub CallExitFunction()
Dim intFunc As Integer
intFunc = ExitFunction()
MsgBox "The value of intFunc is " & intFunc
End Sub
ExitFunc에서는 i 값이 10보다 작으면 For 루프를 진입합니다:
For i = 1 To 10
Next i
그런 다음 If 명령을 사용하여 i의 값이 5와 같은지 확인합니다. 값이 5이면 함수 결과에 i 값을 할당하고 함수를 종료합니다:
If i = 5 Then
ExitFunc = i
Exit Function
End If
조건이 충족되지 않으면 다음 구문을 통해 i를 1씩 증가시키고 다시 For 루프에 들어갑니다:
Next i
CallExitFunction에서 ExitFunc 함수를 호출합니다: 이를 위해 intFunc 변수를 정수 유형으로 정의하고 ExitFunc 함수의 결과를 할당해야 합니다:
Dim intFunc As Integer
intFunc = ExitFunction()
그런 다음 intFunc의 값과 함께 메시지 박스를 반환합니다:
MsgBox "The value of intFunc is " & intFunc
CallExitFunction을 실행하면 먼저 ExitFunc 함수를 호출합니다. 디버그 모드에서 이 코드를 실행하면 루프를 5번 반복하는 것을 볼 수 있습니다. 5번째 반복에서 변수 i의 값은 5가 되고 코드가 If 본문에 들어갑니다. 이제 ExitFunc의 값은 i가 되고 함수가 종료되어 CallExitFunction으로 반환됩니다. 다음으로 실행될 코드는 MsgBox “The value of intFunc is ” & intFunc: 입니다: