CDbl 함수에서 빈 칸을 0 으로 처리 하는 방법

VB 에서 CDbl 함수를 사용 하다가 문제가 발생했습니다.

Double 로 형식을 변환해야 할 값들이 굉장히 많은데, 그 중에 일부는 0 이 아니라 빈 칸인 경우였죠. 몰랐는데 CDbl 함수는 빈 칸을 String 으로 인식해서 형식이 일치하지 않는다는 오류를 뿜어 내더라고요.

당연히 빈 칸은 0으로 바꿔 줄거라고 믿었는데!

그래서 이 문제를 어떻게 해결하면 좋을지 알아보았습니다.

CDbl2 함수 만들기

사실 제일 간단한건 아주 간단하게 함수를 하나 더 만드는 것이었습니다. 함수명은 CDbl2 라고 해보죠.

Public Function CDbl2(Value as Variant)
    If Trim(Value) = "" Then
        CDbl2 = 0
    Else
        CDbl2 = CDbl(Value)
    End If
End Function

아주 간단하죠? 빈 칸을 입력 받으면 0 을 반환하고, 그렇지 않으면 CDbl 함수를 이용해 형식을 변환해주는 것입니다. 혹시나 공백이 들어갈까봐 Trim 까지 사용해주었습니다.

사용법이야 CDbl 함수랑 별반 다를게 없으니 고민하던 문제가 깔끔하게 해결됩니다.

또 다른 해결 방법 feat. Val

또 다른 해결 방법은 내장함수인 Val 함수를 사용 하는 것입니다.

따로 함수를 만들지 않아도 되니까 더욱 편리하죠. 사용법도 간단합니다.

Result = Val(NumberOrString)

Val 함수는 문자와 숫자가 막 섞여 있어도 그 중 숫자만 쏙쏙 잘 뽑아서 숫자 형태로 반환해줍니다. 물론 빈 칸을 투입하면 0을 반환해주니 CDbl 함수의 문제점도 바로 해결 할 수 있죠.

이상으로 CDbl 의 빈 칸 투입 시 에러 발생 문제를 해결 할 수 있는 방법에 대해 알아보았습니다.

참고자료