엑셀 VBA 오류 무시하는 방법
엑셀 VBA 실행할 때 발생하는 오류를 무시하고 실행하는 코드를 소개합니다.
<본문 이동 링크>
<참고할만한 글>
[엑셀/엑셀 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
▶ 코드 실행 결과
- 별도 오류 알림창이 뜨지 않고 정상 실행됨
- 오류에 대해 별도 확인코드를 넣지 않는 경우, 오류가 발생했는지 또는 어떤 오류가 있었는지 알 수가 없음
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 관련내용을 아래글 참고