【マクロVBA】IsNumeric関数を使って数値判定!変数・セルの値でも数字であるか判別可能

条件分岐

VBAで数値の判定を行いたい場合、IsNumeric関数が便利です。

この関数を使うことで、変数やセルに格納された値が数値かどうかを簡単に判定することができます。

本記事では、IsNumeric関数の使い方や注意点、実際の活用例について詳しく解説します。
ぜひ参考にしてください。
それでは見ていきましょう!




⬛︎こんな事ができるようになる!

セルに入力された値が数値かどうかを判定することが出来る

⬛︎忙しい人向けのコピペ用ソースコード

Sub 数値判定の例()
Dim num As Variant
num = セル・変数' 数値として解釈可能な文字列

If IsNumeric(num) Then
 ' 数値の時の処理
Else
 ' 数値の時以外の処理
End If

End Sub

セル・変数数値の時の処理数値の時以外の処理はカスタムして使用してください。

⬛︎構文の説明

まず、使用する関数についてです「IsNumeric関数」になります。
関数仕様としては下記の通りです。

IsNumeric(値・セル・変数)
値・セル・変数」には数値かどうか判定したいた対象を入力します。

では実際に使用した例を紹介したいと思います。

︎IsNumeric関数の使い方

・セルの値が数値かどうか判定する

まず、セルの値が数値かどうか判定してみましょう。
下図の見本をご覧ください。

B2からB5のセルに文字または数値が入力されてあります。
こちらを数値かどうか判定して、結果をD列に表示してみたいと思います。

では再度構文を見てみましょう。

IsNumeric(値・セル・変数)
例えばB2のセルを数値かどうか判定したい場合には「IsNumeric(Cells(2,2))」のように使用します。
 
数値であれば「True」を出力して数値でなければ「False」を出力します。

では見本を数値かどうか判定しましょう。
ソースコードはこちらです。

Sub セルの数値判定()

Dim cycle

For cycle = 2 To 4 Step 1
 If IsNumeric(Cells(cycle, 2)) Then
  Cells(cycle, 4) = “数値です”
 Else
  Cells(cycle, 4) = “数値ではありません”
 End If
Next cycle

End Sub

それでは実行してみましょう。

この中で数値なのは「123」なので、D4には「数値です」と出力されています。

対してそれ以外のセルは「数値ではありません」と表示されました。

・変数の値が数値かどうか判定する

今度は変数の値を数値かどうか判定してみましょう。
下図の見本をご覧ください。

Sub 数値判定の例()
Dim num As Variant
num = “123” ‘ 数値として解釈可能な文字列

If IsNumeric(num ) Then
  MsgBox “数値です”
 Else
  MsgBox “数値ではありません”
End If
End Sub

変数の値が数値であればメッセージボックスで「数値です」と表示され、それ以外は「数値ではありません」と表示します。

それでは実行してみましょう。
結果はこのようになります。

見本では「123」が入力されているので「数値です」というメッセージが表示されました。

これで変数の値も数値であるか確認することが出来ます。

⬛︎IsNumeric関数の注意点

IsNumeric関数を使う際には、以下の点に注意が必要です。

1. IsNumeric関数の出力結果について

IsNumeric関数は、数値として解釈可能な値をTrueとして返します。
つまり、数値以外の値(文字列やブール値など)もTrueと判定されることに注意してください。

2.ロケールの影響

数値判定は、ロケール(地域や言語による設定)に影響を受けます。
ロケールによっては、小数点や桁区切りの表記方法が異なるため、数値判定の結果も異なる場合があります。

⬛︎数値判定の活用例

数値判定は、さまざまな場面で役立ちます。以下にいくつかの活用例を紹介します。

・変数の数値判定

変数に格納された値が数値であるかどうかを判定し、条件に応じた処理を行うことができます。

例えば、ユーザーからの入力値が数値であるかどうかを確認してから計算を行う場合などに活用できます。

・セルの数値判定

Excelのセルに格納された値が数値かどうかを判定し、条件に応じた処理を行うことができます。

例えば、数値以外の値が入力されたセルに対して警告を表示する場合などに活用できます。

・数値判定を活用した処理の例

数値判定を組み合わせることで、より複雑な処理を実現することも可能です。

例えば、特定の範囲内の数値だけを処理対象とする場合や、数値以外の値が含まれるデータを除外する場合などに活用できます。

⬛︎よくあるエラーと対処法

・ 文字列が数値として解釈できない場合に誤った結果が返る

 IsNumeric関数を使う前に、文字列が数値として解釈可能かどうかを事前に確認しましょう。

例えば、CIntやCDblなどの変換関数を使って文字列を数値に変換してからIsNumeric関数を適用することで正確な結果を得ることができます。

・セルに空白や空文字列が含まれる場合に誤った結果が返る

セルの値を取得する前に、セルが空でないことを確認しましょう。

IsEmpty関数やLen関数を使ってセルが空でないかどうかを判定し、空でない場合にのみ数値判定を行うようにします。

・エラー: ロケールによって数値の判定結果が異なる

ロケールによって小数点や桁区切りの表記方法が異なるため、数値判定の結果も異なる場合があります。

このような場合は、数値判定の前にロケールを明示的に設定することで一貫性のある結果を得ることができます。

例えば、Application.DecimalSeparatorやApplication.ThousandsSeparatorプロパティを使用して適切な設定を行います。

■練習問題

練習問題も別の記事でまとめているので是非参考にしてみてください!

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

⬛︎まとめ

いかがだったでしょうか?

本記事では、マクロVBAにおける数値判定について解説しました。IsNumeric関数を使うことで、変数やセルに格納された値が数値かどうかを簡単に判定することができます。

数値判定は、ユーザーからの入力値の検証やデータ処理の際に役立ちます。正しい数値の取り扱いやエラーの防止に寄与することができます。

是非、IsNumeric関数を活用して効率的なVBAプログラミングを行ってみてください。

それでは次回の記事でお会いしましょう。

コメント