値が数値化を判断するIsNumeric
IsNumeric は、セルの値や、バリアント型の変数などが数値がどうかを判断する関数です。
引数の値が数値の場合、Trueを返し、それ以外は False を返します。
引数の値が文字列だった場合でも、内容が全て数値の場合は、Trueを返します。
使い方
IsNumelic は、True、False を返します。特徴としては、文字列でも数値と判断されれば True を返します。
基本的には文字列+数値の場合には False となります。ただ、\マークなどは含まれていても数値と判断されるようです。$マークはFalseとなりました。
Sub sample()
Debug.Print IsNumeric(123) 'True
Debug.Print IsNumeric(1.5) 'True
Debug.Print IsNumeric("123") 'True
Debug.Print IsNumeric("123") 'True
Debug.Print IsNumeric("\200") 'True
Debug.Print IsNumeric("$200") 'False
Debug.Print IsNumeric("aaa") 'False
Debug.Print IsNumeric("a100") 'False
Debug.Print IsNumeric("2025/1/20") 'False
End Sub
IsNumeric は、True、False を返す事から If文の条件式としてよく使われます。
If文での使い方

上記のようなシートがあった時、B列の値をIsNumelicに入力し、結果がTrueだった場合に、値を10倍してE列に書き込むプログラムを書いてみます。
Sub macro1()
Dim i As Long
For i = 4 To 12
If IsNumeric(Cells(i, "B")) Then
Cells(i, "E") = Cells(i, "B") * 10
End If
Next i
End Sub
IsNumelicでは、値に数値以外の文字列が含まれる場合、False となります。ただし、\ や $ など書式設定で単位が付いている場合は、Trueを返し数値計算ができます。(表示が右寄せになっている事からもわかります。)
また、数値のみの文字列は、半角でも全角でも数値と扱われ計算が可能です。これはExcelの仕様と思われますが、IsNumelicもTrueを返します。
日付はFalseを返します。
尚、前のプログラム sample() では、”$200″ が False を返していますが、これは文字列を代入しているからで、セルを判断する場合とは異なります。
色々と例外がありますが、IsNumelic で True を返した場合は、数値計算ができると考えて良いでしょう。
まとめ
IsNumelicは、以下のような特徴があります。
・数値以外が含まれる場合は、Falseを返す。(\ マークなどの例外あり)
・日付は、Falseを返す。
・数値のみの文字列は True を返す。
・セルの値を引数に取る場合は、書式設定を考慮する必要がある。
・IsNumelic で True を返した場合、数値計算が可能。
コメント