
「セルの中身が数字かどうかチェックしたいんだけど…」
「“123”と“abc”を見分ける方法ってないの?」



ご安心ください。VBAの IsNumeric
関数を使えば、
“数字かどうか”を一発で判定できます。
結論:数値かどうかは IsNumeric(調べたい値)
でOK!
目次
IsNumeric関数とは?
IsNumeric
関数は、**指定した値が「数値として認識されるかどうか」**を判断する関数です。
- 数値なら →
True
- 数値以外 →
False
Debug.Print IsNumeric(123) ' → True Debug.Print IsNumeric("abc") ' → False Debug.Print IsNumeric("123") ' → True(※文字列でも数字ならOK)
基本的な使い方
Dim val As String val = "100" If IsNumeric(val) Then MsgBox "これは数値です" Else MsgBox "これは数値ではありません" End If



"100"
のような 文字列型の数字も「数値」と判定されます。
実務でよくある「セルの数値チェック」
If Not IsNumeric(Cells(2, 1).Value) Then MsgBox "A2セルに数値を入力してください" End If



フォーム入力や帳票処理で、「数値が入力されているか」を確認できます。
注意!こんなパターンに気をつけて
入力値 | IsNumericの結果 | 備考 |
---|---|---|
123 | True | 数値 |
"123" | True | 文字列だが中身が数字 |
"123a" | False | 数字+文字はNG |
"" (空欄) | False | 空白は数値とみなされない |
12.3 | True | 小数もOK |
"¥1,000" | False | 記号・カンマ付きはNG(事前に整形を) |
ワンポイント対策:カンマや記号を除去するには?
Dim raw As String raw = "¥1,000" cleaned = Replace(raw, "¥", "") cleaned = Replace(cleaned, ",", "") If IsNumeric(cleaned) Then MsgBox "これは数値として処理可能です" End If
応用:複数セルをまとめてチェック
Dim i As Long For i = 2 To 10 If Not IsNumeric(Cells(i, 1).Value) Then MsgBox "A" & i & " は数値ではありません" End If Next i



データ入力の検証や、Excel帳票のチェックに便利です。
まとめ:IsNumericのポイント
ポイント | 内容 |
---|---|
数値かどうかを調べたいときに使う | True(数値) / False(数値でない) |
文字列でも数字ならTrueになる | "100" や "3.14" もOK |
記号付きは事前に整形が必要 | Replaceでカンマや記号を除く |
空欄や文字混じりのデータに注意 | "123a" や "" は False |
複数セルに使いたい時はFor文と組み合わせ | 入力エリア全体を一括チェックできる |
コメント