【ExcelVBA・マクロ】IsNumericの使い方|数値かどうかを判定する方法【コピペOK】

IsNumericの使い方 ExcelVBA

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コードが書けるようになります。
特に入力チェックや計算処理では必須なので、ぜひ活用してみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました