サイトについて      連絡先   検索

VBA IsNumeric 関数

はじめに

Excel VBA マクロの IsNumeric 関数を紹介します。

IsNumeric 関数は、指定した値を数値型 (Integer など) に変換できるかを判定します。

文字列を「CInt 関数」などで変換できるか判定したいときに使用します。

構文

IsNumeric()
を数値型 (Integer など) に変換できるときは True を返します。それ以外のときは False を返します。

引数「値」判定したい値を指定します。
戻り値の型ブール型 (Boolean)

解説

Integer や Double などの数値型に変換できる値なら True を返します。できないときは False を返します。

CInt 関数」などは変換できないときにエラーが発生します。True を返す時だけ変換すると、エラーの発生を防げます。

True は 1 に、False は 0 に変換できるため True を返します。

日付型を指定すると False を返します。しかし日付型は CInt などで数値に変換できます。

Val 関数」を使えばエラーが発生することなく適切な型に自動で変換してくれます。

使用例


Dim b As Boolean

b = IsNumeric("123")
Debug.Print(b) ' True

b = IsNumeric("123.567")
Debug.Print(b) ' True
  
b = IsNumeric(True)
Debug.Print(b) ' True

b = IsNumeric(Now)
Debug.Print(b) ' False

b = IsNumeric("123Tips")
Debug.Print(b) ' False

Dim v As Variant
Dim s As String
s = "Tips"
If IsNumeric(s) = True Then ' 変換できるときだけ実行する
    v = CInt(s)
    v = CLng(s)
    v = CSng(s)
    v = CDbl(s)
End If

Val 関数」は変換できないときに 0 を返すため、判定する必要がありません。


Dim v As Variant

v = Val("あいう")
Debug.Print (v) ' 0

v = Val("1")
Debug.Print (v) ' 1

v = Val("10.5")
Debug.Print (v) ' 10.5

Dim i As Integer
If IsNumeric("あいう") Then
     i = CInt(i)
End If