[엑셀/VBA] 데이터가 Null 인지 체크하는 방법

folder 프로그래밍 calendar_month web_traffic 0

(아래는 MS 오피스 엑셀 2016 VBA 환경에서 데이터를 핸들링 할 때, 특정 데이터가 Null 인지 확인 했던 상황을 바탕으로 작성되었습니다.)

문제

엑셀 VBA 에서 DB에 있는 여러 테이블을 조인해서 데이터를 가져오다 보니 상황에 따라 어떤 항목은 값이 없어 Null 형태로 가져올 때가 있었습니다.

이 경우 Null 값 처리를 위해 VBA 에서 해당 데이터가 Null인지 확인이 필요했고, 쉽게 그 방법을 찾을 수 있었습니다.

해결

그 방법은 바로 VBA 내장 함수인 IsNull 함수를 사용하는 것입니다.

일단 기본적인 사용 방법은 아래와 같습니다.

If IsNull(RS!Col1) = True Then
    '레코드셋의 Col1 열 값이 Null 일 때 수행할 작업
Else
    '레코드셋의 Col1 열 값이 Null 이 아닐 때 수행할 작업
End If

너무 쉽죠? IsNull 함수는 매우 단순하게 투입변수가 Null 이면 True 를 반환하고, 그렇지 않으면 False 를 반환하도록 아주 단순하게 만들어져 있습니다.

그런데 여기서 재밌는 점이 하나 있는데, 아래 링크의 내용에서도 알 수 있듯이 어떤 변수가 선언만 되어 있고 아무런 값도 넣지 않은 상태라면 IsNull 함수는 False 를 반환 한다는 것입니다.

선언만 되어 있는 변수에 대해 IsNull 함수는 False 를 반환

궁금해서 직접 해봤는데, 진짜였네요. 만약 이런 경우 IsNull 함수가 True 를 반환하도록 만들기 위해서는 해당 변수에 Null 을 넣어줘야 합니다.

변수에 Null 을 넣어줘야 IsNull 에서 True 를 반환

(변수에 Null 이 들어갈 수 있어야 하기 때문에 testVar 변수를 Variant 형식으로 선언했습니다.)

이 부분만 헷갈리지 않는다면 VBA에서 Null 값 체크는 너무나 간단하게 완료할 수 있습니다.

끝.

댓글 남기기