【VBAスタンダード対策】セルの値が「数値」かどうかを判定する組み込み関数を攻略!
セルに入力されている値が数値なのか、文字列(または空欄)なのかをプログラムで判定する処理は、データチェックの基本です。VBAで用意されている「数値判定を行う組み込み関数」と、判定時の注意点を押さえましょう。
1. 問題:セル値の数値判定に使用する関数
【 問題 】 下記のコードは、セル A1 の値が数値(または数値として評価できる値)であるかを判定し、数値の場合のみその値を2倍にしてメッセージボックスに表示しようとしています。空欄 ( A ) に入る正しいVBA組み込み関数はどれでしょうか?
Sub CheckNumericCell()
Dim val As Variant
val = Range("A1").Value
If ( A )(val) Then
MsgBox val * 2
Else
MsgBox "数値ではありません"
End If
End Sub
Dim val As Variant
val = Range("A1").Value
If ( A )(val) Then
MsgBox val * 2
Else
MsgBox "数値ではありません"
End If
End Sub
① IsNumber
② IsNumeric
③ VarType
④ IsValue
2. 正解:数値判定関数に関する正解
正解: ② IsNumeric
3. 解説:IsNumeric 関数の特徴と「Excelワークシート関数」との違いの罠
VBAで値が数値(あるいは数値に変換可能か)を判定するには IsNumeric 関数(イズ・ニューメリック)を使用します。
[ 判定関数の構造と引っ掛けポイント ]
1. 選択肢 ① IsNumber との違い(超重要!)
Excelのワークシート関数には
2. IsNumeric 関数の判定ルール
※日付データ(例: "2026/08/14")や全角数字(例: "123")も、VBAの仕様上数値変換が可能なため True と判定される点に注意が必要です。
1. 選択肢 ① IsNumber との違い(超重要!)
Excelのワークシート関数には
ISNUMBER 関数が存在しますが、VBAの組み込み関数としては存在しません。VBAで直接使えるのは IsNumeric です(ワークシート関数を使う場合は WorksheetFunction.IsNumber(...) と書く必要があります)。2. IsNumeric 関数の判定ルール
IsNumeric(値) は、渡されたデータが数値型(Integer, Long, Doubleなど)である場合や、「文字列であっても数値に変換できる場合(例: "123")」 に True を返します。※日付データ(例: "2026/08/14")や全角数字(例: "123")も、VBAの仕様上数値変換が可能なため True と判定される点に注意が必要です。
ここが試験に出る!: スタンダード試験では、Excel関数名と紛らわしい「IsNumber」や、型を数値で返す「VarType」などを選択肢に混ぜて受験者を惑わせてきます。「VBAの組み込み関数で数値判定をするなら IsNumeric」と即答できるように覚えておきましょう。
4. まとめ
「VBAで数値判定をする時は IsNumeric(セル値) 」。この関数を活用すれば、ユーザーが入力したセルデータを計算する前に「文字が交じっていて計算エラー(型が一致しません)になる」のを防ぐ事前チェック処理をスマートに記述できるようになります。
PR