Etc

Excel VBA 에러발생시 대응책

지오준 2021. 8. 1.
반응형

먼저 에러가 발생하는 경우는 크게 4가지가 있습니다.

1. 단순한 문법오류의 경우

2. 선택한 범위나 인덱스가 존재하지 않을 경우

3. 변수의 타입이 실제 데이터와 다를 경우

4. 0을 나누는 계산을 할 경우

 

에러발생시의 대책으로는 크게 4가지 처리가 있습니다.

1. VBA는 변수선언을 하지않아도 사용할 수 있지만 그로인해서 에러가 발생할 경우가 있으니 강제적으로 변수선언을 위해서 각 모듈의 첫행에 Option Explicit를 추가하는것으로 해결됩니다.

Option Explicit

2. VBA의 실행전에 컴파일을 실행해서 미연에 에러가 발생되는지 확인하는것이 중요합니다.

컴파일방법은 디버그메뉴의 서브메뉴중 VBA프로젝트이 컴파일러를 실행해주시면 됩니다.

3. 실제 에러가 발생시에 VBA의 실행을 멈추지말고 에러번호를 표시하는것입니다.

샘플코드에서는 실제에러가 발생할 경우의 처리를 확안할 수 있습니다.

Sub 함수명()
    '처리내용
    '에러발생시에 ErrorStop으로 이동
    On Error GoTo ErrorStop
    '에러가 발생하지 않을시에는 종료
    Exit Sub
ErrorStop:
    '에러가 발생했을경우에 에러번호와 내용 표시
    MsgBox ("번호" & Err.Number & "의 에러가 발생했습니다." & vbCrLf & _
    Err.Description)
End Sub

4. 여러부분에서 에러가 발생할 경우에는 특정부분의 에러를 무시하고 순차적으로 에러를 확인합니다.

 샘플코드에서는 실제에러가 발생할 경우 On Error Resume Next구문 이후의 에러는 스킵하는것을 확인할 수 있습니다.

Sub 함수명()
    '처리내용
    'On Error Resume Next선언 이후의 에러는 무시함
    On Error Resume Next
    '에러발생시에 ErrorStop으로 이동
    On Error GoTo ErrorStop
    '에러가 발생하지 않을시에는 종료
    Exit Sub  
ErrorStop:
    '에러가 발생했을경우에 에러번호와 내용 표시
    MsgBox ("번호" & Err.Number & "의 에러가 발생했습니다." & vbCrLf & _
    Err.Description)
End Sub

 

반응형

댓글