오늘 VBA로 처리하던 중 이상한 문제가 있어 기록해 둡니다.
IsNumeric() 함수는 인자가 숫자나 숫자로 전환될 수 있으면 True를 반환합니다.
생각지도 못했던 문자열이 True로 나오는 문제가 있으므로 주의 해야 합니다.
IsNumeric("0D0") = True
IsNumeric("0E0") = True
자릿수와 상관없이 숫자열 + D/E + 수자열에 대해서 IsNumeric이 True가 됩니다.
CDbl로 평가해 보면 아래처럼 지수형태의 숫자로 인지하고 있습니다.
CDbl("1234D02") = 123400
CDbl("1234E02") = 123400
그래서 아래처럼 지수형태로 검토해 보면
CDbl("1234D-2") = 12.34
CDbl("1234E-2") = 12.34
지수형태의 문자열도 IsNumeric에서 True가 됨에 주의가 필요합니다.
CDbl("1.234D308") 또는 CDbl("9.9D307") 처럼 308자리 정도까지 True가 나오며
그이상의 자릿수는 Overflow 에러가 납니다.
CDbl("1.234D-123456890") 처럼 음수 지정은 0으로 나오게 됩니다.
'Excel - VBA' 카테고리의 다른 글
VBA로 ZIP과 UnZip (0) | 2023.08.27 |
---|---|
양력을 음력으로 변환하기 (0) | 2023.08.23 |
VBA에서 사용자 Folder를 찾기 (0) | 2023.08.05 |
Outlook 없이 메일을 발송하기 (CDO.Message) (0) | 2023.08.04 |
Outlook을 이용하여 Email 발송하기 (0) | 2023.08.03 |