忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【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

① IsNumber
② IsNumeric
③ VarType
④ IsValue

2. 正解:数値判定関数に関する正解

正解: ② IsNumeric

3. 解説:IsNumeric 関数の特徴と「Excelワークシート関数」との違いの罠

VBAで値が数値(あるいは数値に変換可能か)を判定するには IsNumeric 関数(イズ・ニューメリック)を使用します。

[ 判定関数の構造と引っ掛けポイント ]

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