質問: "0415877D57" If IsNumeric(strMessage) Then MsgBox CDbl(strMessage) Else MsgBox "not numeric" End If ``` 私は、ランタイムエンジンが間違ってDが実際にEであると思っていると推測していますか? これはバグだと思うが、VB.NETの全く同じコードは`数値ではない` これはIsNumericの既知の問題ですか?
回答: 私はこの状況のために、自分のIsNumber関数を長い間使ってきました。 IsNumericは、IsNumeric( "$ 34.20")のように、特定のマネーシンボルに対してtrueを返すこともできます。 私のIsNumber関数は次のようになります: ``` Public Function IsNumber(ByVal Data As String) As Boolean If Data = "" Then IsNumber = False Exit Function End If IsNumber = IsNumeric(Data & "e0") End Function ``` The idea here is... if there is already an e or d in the data, adding another will cause the data to NOT be numeric using the IsNumeric check. You can easily change this function to only allow for integers by replacing "e0" with ".0e0". Want just positive integers? then use this: IsNumeric("-" & Data & ".0e0") このメソッドの唯一の欠点は、通常は空の文字列は数値ではなく、 "e0"を追加すると数値になりますので、コードで行ったようにチェックを追加する必要があることです。