本ページには広告が含まれています。

ExcelVBA IsNumeric関数 数値にできるか判定する

ExcelVBA IsNumeric関数 数値にできるか判定する

Excel VBAの「IsNumeric 関数」について解説します。

スポンサーリンク

IsNumeric 関数とは

Excel VBA の IsNumeric 関数は、値が数値として認識できるかどうかを判定します。判定結果は、数値であれば True そうでなければ False を返します。値が数値に変換可能かを判断するために利用する関数です。

IsNumeric 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

IsNumeric 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

IsNumeric(expression)

引数

引数 説明
expression【必須】判定したい数値式または文字列式を含む
バリアント型 (Variant) の値を指定します

戻り値

戻り値説明
ブール値
(Boolean)
全体が数値として認識できる場合 True
それ以外の場合 False を返します

日付として認識できる値の場合は False を返します。

解説(使用例)

以下、IsNumeric 関数の使用例です。

IsNumeric関数サンプル1 (色々な文字列の判定例)

'■IsNumeric関数サンプル1 (色々な文字列の判定例)
Sub IsNumeric_Sample01()
  '半角の数字
  Debug.Print IsNumeric("123")      'True
  '全角の数字
  Debug.Print IsNumeric("123")   'True
  '漢数字
  Debug.Print IsNumeric("一二三")   'False
  '小数点入りの数字
  Debug.Print IsNumeric("12.3")     'True
  '¥記号入りの数字
  Debug.Print IsNumeric("¥123")     'True
  '円が付いている数字
  Debug.Print IsNumeric("123円")    'False
  'カンマ(,)区切り付きの数字
  Debug.Print IsNumeric("1,234")    'True
  'カンマ(,)の位置が違う場合
  Debug.Print IsNumeric("12,34")    'True
  '途中に空白がある数字
  Debug.Print IsNumeric("12 34")    'False
  '前後に空白がある数字
  Debug.Print IsNumeric(" 1234 ")   'True
  '日付形式の文字列
  Debug.Print IsNumeric("2024/11/07")   'False
End Sub

それぞれの結果は、コード内のコメントを参照願います。

False になったのは「漢数字」「円が付いている数字」「途中に空白がある数字」「日付形式の文字列」でした。

この他にもたくさんの事例があると思いますが「前後に空白がある数字」や「カンマ(,)」などは無視されるようです。

IsNumeric関数サンプル2 (InputBox入力値の判定例)

ユーザーが入力した値が数値として認識できるかどうかを判定する例です。

'■IsNumeric関数サンプル (InputBox入力値の判定例)
Sub IsNumeric_Sample02()
  Dim value As Variant
  value = InputBox("数値を入力してください")
  If value <> "" Then
    If IsNumeric(value) Then
      MsgBox "入力値 「" & value & "」 は数値に変換できます。" & _
        vbCrLf & "変換後の値は「" & CDbl(value) & "」です。", _
        vbInformation
    Else
      MsgBox "入力値 「" & value & "」 は数値として認識できません。", _
        vbCritical
    End If
  Else
    MsgBox "未入力のため中止します。", vbCritical
  End If
End Sub

コードを実行してみた際に表示される MsgBox画像をいくつか貼っておきます。

IsNumeric_Sample02 InputBox画像

全角の数字文字列「12345」を入力 ↑、↓ が結果表示です。

IsNumeric_Sample02 Trueで表示されるメッセージ画像

InputBox で未入力またはキャンセルだった場合は下の画像が表示されます。

IsNumeric_Sample02 未入力時のメッセージ画像

入力した値が数値として認識できないものだった場合は、次のようなメッセージが表示されます。

IsNumeric_Sample02 False 時に表示されるメッセージ画像

このコードで、いろいろな文字列を入力した結果を次項にまとめてみました。

文字列が数値として認識されない例/される例

IsNumeric 関数で False になる引数(文字列)の例と True になる例をそれぞれ表にまとめたので参考にしてください。2番目のサンプルコードを使っていろいろな事例で試してみてください。

False が返る「数値と認識されない例」

引数(文字列)説明(認識されない理由)返される結果
“百二十三”漢数字False
“123abc”数字と文字(円など)が混在しているFalse
“12.34.56”小数点が複数含まれているFalse
” ” (空白)空白文字False
“123 456”数字の間に空白が含まれているFalse
“123$”特殊文字が含まれているFalse
“2024/11/07”日付形式の文字列False
“12:30”時刻形式の文字列False
“0x7b”16進数の形式False

あくまでも参考としてみてください。

True が返る「数値と認識される例」

引数(文字列)説明返される結果
“123”数字のみの文字列True
“45.67”小数点を含む数値True
” 123 “前後に空白があるが数値True
“-456”負数を示す符号付き数値(+正数もOK)True
“0”ゼロTrue
“000123”先頭にゼロが付いている数値True
“1.23E2”科学記数法の形式True
“1.23e-4”小文字の科学記数法True
“3.14159”長い小数(円周率など)True
“1,234.56”カンマ区切りの数値(ロケールによる)True

※(ロケールによる)とは、コンピュータシステムが使用する地域設定(ロケール)によって、数値や日付の表示形式が異なることを指しています。

おわりに

Excel VBA IsNumeric 関数は、引数の値が数値として認識できるとき True を返し、それ以外は False を返します。

IsNumeric は、数値判定を簡単に行うための便利な関数です。データの入力チェックや条件分岐に活用することで、数値変換で発生しがちな実行時エラーを防ぐことができます。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!