VBA上でデータが数値かどうかを調べる場合、IsNumeric関数を用います。IsNumeric関数は引数が数値の場合はTrue(真)、そうでない場合はFalse(偽)を返します。日付は数値でないものとして扱われます。
IsNumeric関数の使い方
引数が数値かを判定
IsNumeric(引数)
IsNumeric(引数)
![isnumeric1](https://sunagitsune.com/wp-content/uploads/2020/04/isnumeric1.jpg)
A1~A3のデータを数値かどうかマクロで確認します。それぞれ半角数字、漢数字、日付です。
![isnumeric2](https://sunagitsune.com/wp-content/uploads/2020/04/isnumeric2.jpg)
ざっとコードを書きました。For文は指定した命令を繰り返すためのもので、ここでは3回リピートを指定しています。
![isnumeric3](https://sunagitsune.com/wp-content/uploads/2020/04/isnumeric3.jpg)
If文でRange(“A” & i).Value(A+変数iの値。最初がA1、次がA2……となる)を、IsNumericの引数として指定し、TrueとFalseで処理を分けます。
![isnumeric4](https://sunagitsune.com/wp-content/uploads/2020/04/isnumeric4.jpg)
Valueを使い、Trueであれば数値ですよと表示する、というシンプルなコードです。
IsNumeric(数値)であれば、If True Thenと同じことになります。
IsNumeric(数値)であれば、If True Thenと同じことになります。
![isnumeric5](https://sunagitsune.com/wp-content/uploads/2020/04/isnumeric5.jpg)
結果はこんな感じです。
![isnumeric6](https://sunagitsune.com/wp-content/uploads/2020/04/isnumeric6.jpg)
日付はシリアル値なので実質数値なんですが、書式設定が日付の場合は数字認定されません。書式を数値に変更すればパスします。
' vba
For i = 1 To 3
If IsNumeric(Range("A" & i).Value) Then
Range("B" & i).Value = "数値です"
Else
End If
Next
IsNumeric関数の使い方については以上です。日付かどうかを判定する場合はIsDate関数、空白かどうかはIsEmpty関数の記事をご参照ください。
文字列を判定したい、あるいはTrue/Falseではなくデータ型の名称を取得したい・条件に使いたい場合は、TypeName関数を使います。
![](https://sunagitsune.com/wp-content/uploads/2018/10/gui-2311261_1280.png)
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント