엑셀/엑셀 VBA

엑셀 VBA 오류 무시하는 방법

90년대생 직장인 2023. 1. 30. 23:56
반응형

엑셀 VBA 실행할 때 발생하는 오류를 무시하고 실행하는 코드를 소개합니다.


<본문 이동 링크>

1. 코드 기본 설명

2. 일반적인 오류 발생

3. On Error Resume Next 활용

4. 에러 발생여부 확인

 

<참고할만한 글>

[엑셀/엑셀 VBA] - 엑셀 VBA 오류 정보(번호 및 이유) 확인하는 방법

[엑셀/엑셀 VBA] - 엑셀 VBA 오류 제어하는 방법(On Error GoTo)


1. 코드 기본 설명

- On Error Resume Next는 VBA 코드 진행 중 에러가 발생하더라도 계속 진행하도록 하는 명령문입니다.

- 위 코드를 작성한 이후 발생한 명령문의 오류는 무시한채 다음 명령문을 순차적으로 진행합니다.

 

2. 일반적인 오류 발생

▶ 일반적인 VBA 실행 중 오류가 발생하면 해당 명령문에서 중단되고 오류 알림창이 나타납니다.

▶ 코드 예시 

Sub Error_Common()

    Dim i As Integer
        
    '오류예시1) 계산이 불가능한 0으로 나눔
    i = 100 / 0
    
    '오류예시2) integer 변수에 "문자"를 입력함
    i = "text"
    
End Sub

▶ 코드 실행 결과

  - 알림창 화면

  - 디버그 선택 후 화면

    : 오류가 발생한 부분에서 코드가 중단됨을 확인

반응형

3. On Error Resume Next 활용

▶ 일반적인 오류 발생 시 코드가 중단되는 것을 예방하기 위해 필요에 따라 On Error Resume Next를 사용

▶ 위 코드 사용 진행 후 발생되는 오류는 무시되고 VBA 코드가 지속 실행됨

▶ 코드 예시

  - 2번의 일반적인 오류 예시 코드에 "On Error Resume Next"만 추가함

Sub Error_Next()

    Dim i As Integer
    
    '오류가 발생하더라도 해당 명령문을 무시하고 다음 명령문 실행
    On Error Resume Next
        
    '오류예시1) 계산이 불가능한 0으로 나눔
    i = 100 / 0
    
    '오류예시2) integer 변수에 "문자"를 입력함
    i = "text"
    
End Sub

▶ 코드 실행 결과

  - 별도 오류 알림창이 뜨지 않고 정상 실행됨

  - 오류에 대해 별도 확인코드를 넣지 않는 경우, 오류가 발생했는지 또는 어떤 오류가 있었는지 알 수가 없음

728x90

4. 에러 발생여부 확인

▶ On Error Resume Next 활용 시 놓칠 수 있는 에러를 확인하기 위해 아래와 같은 코드 사용 가능

▶ 코드 예시

Sub Error_Check()

    Dim i As Integer
    
    '오류가 발생하더라도 해당 명령문을 무시하고 다음 명령문 실행
    On Error Resume Next
        
    '오류예시1) 계산이 불가능한 0으로 나눔
    i = 100 / 0

    If Err.Number <> 0 Then
        MsgBox "VBA 실행 중 Error가 발생했습니다."
    Else
        MsgBox "VBA가 정상 실행되었습니다."
    End If
    
End Sub

▶ 실행 결과

  - Err.number는 에러 번호를 반환하는 메서드로 정상일 경우는 "0"을 반환, 에러가 발생하면 유형에 따라 0을 초과하는 숫자로 반환함

  - Err.Number 또는 Err.Description 관련내용을 아래글 참고

[엑셀/엑셀 VBA] - 엑셀 VBA 오류 정보(번호 및 이유) 확인하는 방법

반응형