A子さん「セルの中身が数字かどうかチェックしたいんだけど…」
「“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文と組み合わせ | 入力エリア全体を一括チェックできる |

コメント