VBAでデータを扱っていると、次のようなことはありませんか?
- 入力された値が数値か確認したい
- 文字列が混ざっていてエラーになる
- 安全に計算処理をしたい
このような場合は、IsNumeric関数を使うことで解決できます。
値が数値として扱えるかどうかを判定できる、非常に重要な関数です。
この記事では、IsNumericの基本から実務で使える活用方法まで分かりやすく解説します。
この記事でできること
- 数値かどうか判定できる
- 計算エラーを防げる
- 入力チェックができる
基本:IsNumeric関数の使い方
基本構文はこちらです。
IsNumeric(値)
例:
MsgBox IsNumeric(100)
→ True(数値)
戻り値の意味
| 結果 | 意味 |
|---|---|
| True | 数値として扱える |
| False | 数値ではない |
基本例:数値チェック
Option Explicit
Sub CheckNumeric()
Dim val As Variant
val = "123"
If IsNumeric(val) Then
MsgBox "数値です"
Else
MsgBox "数値ではありません"
End If
End Sub
セルの値をチェックする
Dim val As Variant
val = Range("A1").Value
If IsNumeric(val) Then
MsgBox val * 2
Else
MsgBox "数値を入力してください"
End If
計算前のチェックでよく使います。
InputBoxと組み合わせる
ユーザー入力の検証に最適です。
Dim val As String
val = InputBox("数値を入力してください")
If Not IsNumeric(val) Then
MsgBox "数値を入力してください", vbExclamation
Exit Sub
End If
MsgBox "入力値:" & val
数値として扱える例
IsNumeric("123") ' True
IsNumeric("123.45") ' True
IsNumeric("-10") ' True
数値ではない例
IsNumeric("ABC") ' False
IsNumeric("123A") ' False
注意:Trueでも注意が必要なケース
① 通貨や記号付き
IsNumeric("¥1000") ' True
② 日付もTrueになる場合がある
IsNumeric(Date) ' True
→ 内部的には数値(シリアル値)だからです。
IsNumericとIsDateの違い
| 関数 | 判定内容 |
|---|---|
| IsNumeric | 数値かどうか |
| IsDate | 日付かどうか |
安全な数値処理(おすすめ)
Dim val As Variant
val = Range("A1").Value
If Not IsError(val) And IsNumeric(val) Then
MsgBox val * 2
Else
MsgBox "計算できません"
End If
エラー+数値チェックでより安全です。
実務での活用例
- 入力チェック
- 計算前の検証
- CSVデータの検証
- エラー防止処理
「安全なVBAコード」に必須です。
よくあるエラーと対処法
① 数値なのにFalseになる
空白や文字が混ざっていないか確認してください。
② Trueなのに計算でエラー
日付や通貨形式の可能性があります。
③ コードは正しいのにエラーになる
コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。
まとめ
- IsNumericで数値判定ができる
- 入力チェックで必須の関数
- 日付や通貨に注意
- 安全な処理の基本
IsNumericを使いこなせるようになると、エラーに強い安定したVBAコードが書けるようになります。
特に入力チェックや計算処理では必須なので、ぜひ活用してみてください。

コメント