'numeric error'에 해당되는 글 1건

  1. 2015.05.14 숫자... 지수형식 오류


가끔은 아주 가끔은 애먹을 일이 있으면 보게 됩니다
숫자가 지수형식으로 display 됨으로 인한 오류 사전 예방입니다


Option Explicit


Sub NumericCheck()' === 모듈 시작
' CodeBy [ 오즈맨 ] , Date : 2015-05-14
' 배열내 숫자가 오류인지 아닌지를 검사할 임시 배열입니다.
Dim tmpVarr(1 To 20, 1 To 4)
Dim iip As Double
For iip = 1 To 20
     tmpVarr(iip, 1) = Rnd
     tmpVarr(iip, 2) = Rnd
     tmpVarr(iip, 3) = tmpVarr(iip, 2) - tmpVarr(iip, 1)
     tmpVarr(iip, 4) = "=rc[-1]-rc[-2]"
Next
Cells(1, 1).Resize(21, 5).ClearContents
Cells(1, 1).Resize(20, 4).Value = tmpVarr

Call ErrChk(tmpVarr)

End Sub         ' ___ 모듈 종료



Sub ErrChk(His_Variant As Variant)' === 모듈 시작
' CodeBy [ 오즈맨 ] , Date : 2015-05-14
' 배열내 숫자가 오류인지 아닌지를 검사합니다.
' 오류로 반환되는 경우에는 숫자의 형식을 미리 확인합니다.
Dim i_i   As Double
Dim j_j   As Double
Dim chkkV As String
Dim cnt_i As Double, cnt_j As Double
Dim AnswUniq   As New Collection

If TypeName(His_Variant) = "Variant()" Then
Else
     If IsNumeric(His_Variant) = True Then
          chkkV = "'" & His_Variant
               If chkkV Like "*E*" Then
                    If Mid(chkkV, 3, 1) = "." Then
                         AnswUniq.Add "Value Error =  " & Mid(chkkV, 2)
                    End If
               End If
     End If
     If AnswUniq.Count <> 0 Then GoTo Error_Found_OZman
End If

cnt_i = UBound(His_Variant, 1)
cnt_j = UBound(His_Variant, 2)

For i_i = 1 To cnt_i
For j_j = 1 To cnt_j
     If IsNumeric(His_Variant(i_i, j_j)) = True Then
          chkkV = "'" & His_Variant(i_i, j_j)
               If chkkV Like "*E*" Then
                    If Mid(chkkV, 3, 1) = "." Then
                         AnswUniq.Add "Error R/C " & i_i & "/" & j_j & "= " & Mid(chkkV, 2) & " ~~ " & CDec(Mid(chkkV, 2))
                    End If
               End If
     End If
Next
Next
     If AnswUniq.Count <> 0 Then GoTo Error_Found_OZman


Exit Sub


Error_Found_OZman:
cnt_i = AnswUniq.Count

Debug.Print
Debug.Print
Debug.Print "Errrrrr", Now
For i_i = 1 To cnt_i
     Debug.Print AnswUniq(i_i)
Next

Debug.Print "See Again"
Debug.Print

MsgBox "Numeric   Error   Check Again   ", vbOKOnly, "Special Module By OZMAN"

End Sub         ' ___ 모듈 종료


Posted by 오즈맨스머프