「integer null 判定 vba」
「マクロ long型 null判定」
といった検索キーワードで時折アクセスがあります。
ここで「null」と表現されているのが何なのか不明ですが、変数に値が代入されているかどうかを判定したかったのかな、と想像しています。
数値型変数の中身を確認するサンプルプロシージャ
以下のようなSubプロシージャを、私が書かせていただいたVBA関連本で多用しているローカルウィンドウを使って、変数の中身を確認することをおすすめします。
Dim var As Variant
Dim num_int As Integer
Dim num_lng As Long
Dim num_dbl As Double
var = 123
num_int = 123
num_lng = 123
num_dbl = 123
num_int = Null
num_lng = Null
num_dbl = Null
End Sub
比較用のVariant型変数と、さまざまな数値型の変数を用意し、
Dim var As Variant Dim num_int As Integer Dim num_lng As Long Dim num_dbl As Double
数値とNullを代入しているだけのSubプロシージャです。
サンプルプロシージャをステップ実行すると
上記のSubプロシージャのステップ実行を開始した直後は下図のような状態になります。
3つの数値型変数の値はいきなり「0」になっています。
VBAの数値型変数の初期値は「0」ということです。
つまりVBAで数値型変数に代入が行われているかを判定するには、「0」かどうかを判定するということになります。
VBAの数値型変数はNullにならない
ステップ実行を進めて、Variant型で宣言した変数varへNullを代入する行
var = Null
が実行されると、もちろん変数varの値はNullになります。
しかし、次の
num_int = Null
を実行しようとすると、実行時エラーが発生してしまいます。
VBAで数値型の変数にNullは代入できないためです。
数値型変数には、そもそもNullを代入できないわけですから、IsNull関数を使ったNull判定も無意味です。
最終更新日時:2022-10-28 05:59
Home » エクセルマクロ・Excel VBAの使い方 » VBAの数値型変数がNullかを判定したい??