기초부터 실전까지 VBA 엑셀22 - On Error

IT 관련 지식/VBA 공부|2019. 11. 16. 23:30
반응형
728x170

<VBA 엑셀22 - On Error>

 

이번에는 VBA에서 에러(Error)가 발생했을 때 어떻게 처리를 할 수 있는지에 대해 알려드리겠습니다.

 

프로그래밍을 하다 보면 에러는 실수로 나올 수 도 있고 무언가 부족하여 나올 수 도 있습니다.

 

그때 이 에러를 어떻게 다룰 것인가가 프로그래밍에서 중요한 영향을 끼칩니다.

 

그럼 하나씩 알아보겠습니다.

 


1. VBA On Error의 기본형태

 

특정한 구문을 실행 한 뒤 에러가 나올 수 있는 곳에 On Error를 사용한다면 그 에러에 대해 어떻게 대처할 것인지 설정할 수 있습니다.

 

참고로 여기서 말하는 에러는 VBA를 실행했는데 나오는 모든 에러를 의미합니다.

 

On Error GoTo 행 레이블

 

On Error Resume Next

 

On Error GoTo 0

 

이제 각각이 무엇을 의미하는지 설명드리겠습니다.


On Error GoTo 행 레이블

오류가 발생하면 행 레이블의 위치로 제어가 이동합니다.

 

On Error Resume Next

오류가 발생하면 오류가 발생하더라도 무시하고 계속합니다.

 

On Error GoTo 0

현재 프로 시저에 포함 된 사용 가능한 오류 처리 루틴을 해제합니다.
On Error GoTo 0 문을 지정하지 않은 경우 프로 시저가 종료 될 때 자동으로 비활성화됩니다.

 

제일 마지막 구문의 이해가 조금 어려울 것이라고 생각하는데요.

 

예문을 통해 쉽게 보겠습니다.

 

300x250

2. VBA On Error의 예문

예문의 경우 제일 아래에 사용한 코드를 남겨놓겠습니다.

 

① On Error Go To 와 Go To 0

 

이 둘은 다음과 같이 사용할 수 있습니다.

Sub Sample()

    On Error GoTo Label01
    
    '여기서 에러가 발생했을 경우 Label01로 이동
    
    On Error GoTo 0
    
    '여기서 에러가 발생했을 경우 VBA 종료
    
    Exit Sub
    
Label01:
    '에러 발생시의 처리

End Sub

 

하나씩 분석해보자면

 

GoTo Label01의 하단 구문에서 경우 에러 발생 → Label01의 부분으로 이동

 

GoTo 0의 하단 구문에서 에러 발생 → VBA 바로 종료

 

이렇게 됩니다.

 

그럼 하나의 예문을 더 보겠습니다.

 

Sub sample1()
    On Error GoTo Label01
    Call sample2
    Call sample3
    Exit Sub
Label01:
    MsgBox "Label01"
End Sub

Sub sample2()
    On Error GoTo Label02
    Dim i As Long
    i = "abc"
    Exit Sub
Label02:
    MsgBox "Label02"
End Sub


Sub sample3()
    On Error GoTo 0
    Dim i As Long
    i = "abc"
    Exit Sub
Label03:
    MsgBox "Label03"
End Sub

 

조금 긴 문장입니다 ㅎㅎ

 

하나씩 해석해드리겠습니다

 

제일 좋은 방법은 VBA를 켜서 위 문장을 다 적으신 후 Sample1 부터 하나씩 컴파일을 해보는 것입니다.

 

한줄씩 컴파일 하는 방법은 "F8"을 누르시면 됩니다.

 

그렇게 해보면

 

Sample1 실행 → Sample2 소환 Sample2구문 실행 → 오류 발생 → Label02 실행 → Sample3 실행 → 에러 발생 → Sample3 종료 → Label01 실행 매크로 종료

 

이와 같이 실행됩니다.

 

다음으로 On Error Resume Next를 보고 예문을 마치겠습니다.

 

②  On Error Resume Next

 

Sub sample4()

Dim i As Long
On Error Resume Next
i = "ABC"

End Sub

 

만약 위의 코딩에서 On Error Resume Next이 없다면 변수 i에 "ABC"를 넣는 순간 에러가 발생할 것입니다.

 

하지만 On Error Resume Next가 있기때문에 이를 무시하고 다음으로 진행하여 sample4 구문을 종료합니다.

 


오늘은 이렇게 VBA에서 On Error라는 함수를 알아봤습니다.

 

프로그래밍에서 에러를 다루는 일은 중요하니 꼭 알아두면 좋은 내용입니다.

 

On Error02.txt
0.00MB
On Error01.txt
0.00MB

 

더 많은 VBA 자료를 보고 싶다면 ☜ 여기!!

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀1 - 매크로 사용준비

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀7 - Const 상수 선언

[IT 관련 지식/VBA 공부] - 기초부터 실전까지 VBA 엑셀14 - 메세지 박스 MsgBox

 

일본에서 이야기하는 한국뉴스!

[일본 뉴스] - 일본 뉴스 분석 - 日 주요 언론, 조속한 한일 정상회담 개최 촉구

[일본 뉴스] - 일본 뉴스 분석 - 아베, 이 총리에게도 "국가간 약속지켜야" 거듭 억지

 

직장인인데 일본에서 친구를 만들고 싶다고요? 👈Click!

반응형

댓글()