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画像をいくつか貼っておきます。
全角の数字文字列「12345」を入力 ↑、↓ が結果表示です。
InputBox で未入力またはキャンセルだった場合は下の画像が表示されます。
入力した値が数値として認識できないものだった場合は、次のようなメッセージが表示されます。
このコードで、いろいろな文字列を入力した結果を次項にまとめてみました。
文字列が数値として認識されない例/される例
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 |
※(ロケールによる)とは、コンピュータシステムが使用する地域設定(ロケール)によって、数値や日付の表示形式が異なることを指しています。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA IsNumeric 関数は、引数の値が数値として認識できるとき True を返し、それ以外は False を返します。
IsNumeric は、数値判定を簡単に行うための便利な関数です。データの入力チェックや条件分岐に活用することで、数値変換で発生しがちな実行時エラーを防ぐことができます。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;