Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀(Excel) VBA - On Error GoTo 문으로 함수 실행중 오류 처리 하기

엑셀(Excel)/VBA
반응형

엑셀(Excel) VBA - On Error GoTo 문으로 함수 실행중 오류 처리 하기

 

환경 : Microsoft Excel 2010

 

VBA 에서는 에러가 발생하면 실행이 중단되는 것을 막고 적당히 처리될수 있도록 On Error GoTo 문을 제공합니다. 프로그램에서 여러가지 원인으로 인해 에러가 발생하게 됩니다. 이런 에러들을 관리할수 있는 것이 On Error GoTo 문입니다.

 

프로그램을 하다보면 다양한 에러를 접하게 되는데 에러가 발생하는 제일 먼저 무슨에러인지와 무엇 때문에 발생했는지 원인을 파악해야 합니다. On Error GoTo 문은 이런점에 대해서 대처할 수 있도록 기능을 제공합니다. 상단에 On Error GoTo 문과 레이블명을 조합해서 쓰고 하단에 레이블명을 써 놓으면 에러가 발생하는 순간에 레이블 명으로 이동하게 됩니다.

 

아래 샘플은 Integer 에 값을 넣는데 Integer 보유할수 있는 수보다 더 크기 때문에 오버플로 에러가 날겁니다. 에러가 나면 Err_check 로 이동하게 되고 메시지 박스에 오류번호와 상세내용에 대해 문자열로 구성해 보여줍니다.

 

Private Sub ErrorCheckSample()

'' 에러 체크를 위한 문장

On Error GoTo Err_Check

    Dim data As Integer

    data = 50000

    MsgBox "Data 값은 " & data

   

'' 에러가 발생하면 오게될 레이블명

Err_Check:

    If Err.Number <> 0 Then

        MsgBox "오류번호 : " & Err.Number & vbCr & _

        "오류내용 : " & Err.Description, vbCritical, "오류"

    End If

 

End Sub

 

결과값은 아래 그림과 같습니다. 오류번호가 6번이고 오버플로 에러임을 알수 있습니다. 위의 소스에서 Err.Number 0 이면 오류가 아니고 정상임을 알리는 것입니다.

 

엑셀(Excel) VBA - On Error GoTo 문으로 함수 실행중 오류 처리 하기

 

다음은 오류가 발생했다고 중지 하는 것이 아니라 그대로 진행할수 있도록 소스를 짜는 것입니다. 이렇경우는 오류구문이 특별하게 소스에 영향을 주지 않고 에러의 내용에 대해서 알고 있을 때 사용합니다. 그 문장은 On Error Resume Next On Error GoTo 0 입니다. 오류가 발생하면 0 이외의 값이 들어가게 되는데 0 으로 초기화 시켜주는 것입니다. 그럼 오류처리기가 처리하지 않고 다음 문장부터 소스가 계속 실행되는 것입니다.

 

Private Sub ErrorCheckSample2()

'' 에러 체크를 위한 문장

On Error Resume Next

    Dim data As Integer

    data = 50000

    MsgBox "Data 값은 " & data

   

'' 발생한 모든 오류값들을 없애기 위함

On Error GoTo 0

 

End Sub

 

같은 소스인데 오류가 발생하지 않고 그대로 진행되다 보니 Data 값이 0 이 되었네요. 이렇게 오류를 무시하고 진행하는 것은 좋지 않습니다. 다른 사람들과 협업할 때는 이게 폭탄이 될수 있습니다.

엑셀(Excel) VBA - On Error GoTo 문으로 함수 실행중 오류 처리 하기

 

반응형
Posted by 녹두장군

댓글을 달아 주세요