VBA 종료 하위 | 조건이 충족되지 않는 경우 VBA 하위 절차 종료

Excel VBA 종료 하위 절차

Exit Sub 문은 정의 된 VBA 코드 줄보다 먼저 하위 프로 시저를 종료합니다. 그러나 하위 절차를 종료하려면 일종의 논리적 테스트를 적용해야합니다.

이것을 간단한 용어로 구성합시다.

 Sub MacroName () '...'Some code here '... Exit Sub'아래 코드를 추가로 실행하지 않고 Sub 종료 '...'이 코드는 무시됩니다. '... End Sub 

이 VBA Exit Sub Excel 템플릿을 여기에서 다운로드 할 수 있습니다. – VBA Exit Sub Excel 템플릿

예 1

더 나은 예는 아래 코드를 참조하십시오.

암호:

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

위의 코드는 A1에서 A10까지의 셀에 1에서 10까지의 일련 번호를 삽입합니다.

이제 5 개의 일련 번호 만 삽입하고 변수 "k"의 값이 6이되는 즉시 서브를 종료하고 싶습니다.

이를 위해 IF k = 6 Then Exit Sub 로 Excel에서 논리 테스트를 추가해야합니다 .

암호:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'k 값이 6이되는 즉시 모든 코드를 무시하고 Cells (k, 1)을 종료합니다 .Value = k Next k End 보결 

이제 코드를 한 줄씩 실행하십시오. 진행을 시작하려면 F8 키를 누르십시오.

현재 k 값은 0입니다.

k 값을 1로 변경하려면 F8 키를 한 번 더 누릅니다.

따라서 k 값은 1입니다. 코드가 계속 실행되고 A1 셀에 1이 삽입됩니다. 이와 같이 k 값이 6이 될 때까지 루프를 계속 실행합니다.

이제 k의 값은 6이고 코드 줄은 논리 테스트를 실행하여 하위 절차를 종료합니다. F8 키를 한 번 더 누르면 전체 하위 절차 만 바로 종료됩니다.

보시다시피 "Exit Sub" 라는 단어가 강조 표시되어 있습니다. F8 키를 누르면 "End Sub" 라는 단어로 이동하지 않고 하위 절차를 종료합니다 .

예제 # 2 – 오류 발생시 하위 절차 종료

오류 값을 받으면 하위 절차를 종료 할 수도 있습니다. 예를 들어, 숫자 1을 숫자 2에서 나눈 아래 데이터를 고려하십시오.

다음은 두 숫자를 나누는 코드입니다.

암호:

 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 

우리가 알다시피 우리는 어떤 숫자도 0으로 나눌 수 없습니다. 따라서 그렇게하려고하면 런타임 오류 '11': Division By Zero라는 오류가 발생합니다.

오류가 발생하는 즉시이를 방지하기 위해 매크로를 언급하여 즉각적인 효과로 하위 절차를 종료합니다. 아래 코드는 그러한 경우 중 하나입니다.

암호:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler : Exit Sub End Sub 

위의 예에서 "On Error Goto ErrorHandler"라는 문을 언급했습니다. 여기서 ErrorHandler라는 단어는 내가 지정한 레이블입니다. 코드 하단에서 볼 수 있다면 레이블을 다음과 같이 언급했습니다.

ErrorHandler : 하위 종료 

따라서 코드에 오류가 발생하면 바로 코드를 눌러 레이블로 이동하고 레이블에 "Exit Sub"문이 있으므로 하위 프로 시저를 종료합니다.

Now I will run the code, it will calculate the division until it finds an error.

As you can see in the cell C7 it has encountered an error as “Division by Zero” so it has exit the subprocedure. Without informing the user exiting the subprocedure is always a dangerous thing. To inform the user about the error we can include one small message box.

Code:

 Sub Exit_Example2() Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells(k, 3).Value = Cells(k, 1).Value / Cells(k, 2).Value Next k ErrorHandler: MsgBox "Error has Occured and the error is:" & vbNewLine & Err.Description Exit Sub End Sub 

The above code will show the error message then exit the subprocedure. While running code if an error occurs it will show the message box in VBA like below.

This is more of a reliable way of exiting the Sub Procedure.