Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA On Error GoTo 반복문에서 에러 거르기

엑셀(Excel)/VBA
반응형

VBA 같은 경우 반복문에서 에러가 발생하면 함수를 끝내야 합니다. 그럼 자신이 원하는 결과값을 얻지 못하고 종료가 되겠죠. 만약 반복문에서 에러를 일으킬 만한 데이터가 포함되어 있어도 무시하고 최종 결과물을 얻을 수 있는 방법은 없을까요? 오늘은 오류 처리를 위해 사용하는 On Error Resume Next 문을 이용해서 반복문을 끝까지 처리하는 방법에 대해 알아 보겠습니다.

 

 

그림은 합계를 구하는 샘플입니다. 중간에 숫자가 아닌 텍스트가 있어서 에러가 발생하게 되어 있습니다. 텍스트를 무시하고 합계를 구해 보도록 하겠습니다.

엑셀 VBA On Error GoTo 반복문에서 에러를 걸러내고 데이터를 구하는 방법

 

먼저 반복문에서 오류 처리를 위해 On Error GoTo 문을 사용합니다. GoTo 함수의 인수로 지정된 변수 InvalidValue는 에러가 발생했을 때 해당 줄로 이동해서 오류 처리를 하게 됩니다.

Set rng = ActiveSheet.Range("B1:B7")
 
For Each rCell In rng
    On Error GoTo InvalidValue:
    iTotal = iTotal + rCell.Value
Next rCell

 

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA - On Error GoTo 문으로 함수 실행중 오류 처리 하기
엑셀 Excel 런타임 오류 1004 해결하기 위한 여러 가지
엑셀 Excel 보안 설정으로 인해 매크로 에러 없애기
엑셀 VBA Option Explicit 변수선언 에러 적용하기
셀 VBA 매크로 디버깅, 디버그 코드 분석하기

 



만약 작업자가 이런 에러를 예상하고 있고 그것을 무시하고 계속해서 반복문이 수행되기를 원한다면 On Error Resume Next 문을 사용해야 합니다. 에러 처리 문장이 있는 InvalidValue 아래에 Resume Next 를 넣어 주면 에러 처리 후 For 반복문을 계속해서 진행하게 됩니다.

For Each rCell In rng
    On Error GoTo InvalidValue:
    iTotal = iTotal + rCell.Value
Next rCell
 
ActiveSheet.Range("B9") = iTotal
 
InvalidValue: ‘’에러 처리
 
MsgBox "Err Number : " & Err.Number
 
Resume Next

 

 

또 하나 추가할 것이 있습니다. 오류가 발생하지 않은 경우 오류 처리 코드가 실행되지 않도록 작업을 해 줘야 합니다. 오류 처리 루틴 바로 앞에 Exit Sub, Exit Function, Exit Property 문을 넣어 줍니다. 전체 소스는 다음과 같습니다. 

Sub ErrorInfo()
 
    Dim rng As Range
    Dim rCell As Range
    Dim iTotal As Integer
   
    Set rng = ActiveSheet.Range("B1:B7")
          
    For Each rCell In rng
        On Error GoTo InvalidValue:
        iTotal = iTotal + rCell.Value
    Next rCell
   
    ActiveSheet.Range("B9") = iTotal
   
Exit Sub
 
InvalidValue:
   
    MsgBox "Err Number : " & Err.Number
 
    Resume Next
End Sub

 

 

위의 함수를 실행한 결과 그림처럼 1번에서 오류가 발생하고 확인을 누릅니다. 그럼  종료되는 것이 아니라 계산은 계속 진행이 되어서 텍스트를 뺀 숫자의 합계를 구하게 됩니다

엑셀 VBA On Error GoTo 반복문에서 에러를 걸러내고 데이터를 구하는 방법

아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※
엑셀 VBA - On Error GoTo 문으로 함수 실행중 오류 처리 하기
엑셀 Excel 런타임 오류 1004 해결하기 위한 여러 가지
엑셀 Excel 보안 설정으로 인해 매크로 에러 없애기
엑셀 VBA Option Explicit 변수선언 에러 적용하기
셀 VBA 매크로 디버깅, 디버그 코드 분석하기
반응형
Posted by 녹두장군

댓글을 달아 주세요