Excel VBAで表の値を扱う際、「そのセルに数値が入力されているかどうか」を確認したい場面はよくあります。
たとえば、数値計算を行う前に、数値以外の入力を排除したい場合などです。
この記事では、VBAの IsNumeric 関数を使って、セルの値が数値かどうかを判定する方法をご紹介します。
目次
基本構文:IsNumeric関数でチェック
IsNumeric(値)
指定した値が数値として解釈可能かどうかを判定する関数で、結果は True または False を返します。
セル範囲内の値がすべて数値かどうかを確認するVBAコード
以下は、セル範囲 "C3:E5" に対してすべてのセルが数値であるかどうかをチェックする例です。
Sub CheckIfNumeric()
Dim checkCell As Range
For Each checkCell In Range("C3:E5")
If IsNumeric(checkCell.Value) = False Then
checkCell.Select
MsgBox "数値ではない値があります:" & checkCell.Address
Exit Sub
End If
Next
MsgBox "すべてのセルに数値が入力されています"
End Sub
解説
Range("C3:E5"):チェック対象のセル範囲を指定します。IsNumeric(checkCell.Value):セルの値が数値でなければFalseを返します。- 最初に見つかった非数値セルにフォーカスし、アラートを表示します。
- 全セルが数値の場合は、完了メッセージが表示されます。
IsNumeric関数の判定例
| 入力値 | IsNumericの結果 | 備考 |
|---|---|---|
| 123 | True | 数値 |
| “456” | True | 数字の文字列もOK |
| “abc” | False | 文字列 |
| “” | False | 空白も数値ではない |
| “12a” | False | 混在 |
使用シーンの例
- ユーザー入力の妥当性チェック(数値限定)
- 数値を前提とした計算処理の前にデータ検証
- 誤入力の自動検出と通知
まとめ
| 処理内容 | コード例 |
|---|---|
| セルが数値かどうか判定 | IsNumeric(Range("C3").Value) |
| 範囲内すべての数値を確認 | For Each ループ + IsNumeric |
| 数値でないセルを特定・選択 | .Select + .Address |
| 完了メッセージを表示 | MsgBox を使用 |
