読者です 読者をやめる 読者になる 読者になる

意外となんとかなる日記

世迷言を心に、綺麗事を頭に

スポンサーリンク

Excel VBAのIsNullでしてやられた件

 少し時間を取られたのでメモしてみます。そんなに難しいことではないのですが、思わぬ時間を取ってしまったので。

 そもそもは私が出したものではないのですが、自分で実際にタイプしてみて確かにおかしい気がすると思いました。

 

 

 以下プログラムです。

 

Dim a As Variant

a = Null 
If a = Null Then 
    Debug.Print "a is Null" 
Else 
    Debug.Print "a is not Null" 
End If

If a <> Null Then 
    Debug.Print "a is <>Null" 
Else 
    Debug.Print "a is not <>Null" 
End If 
If IsNull(a) Then 
    Debug.Print "a is IsNull"
Else 
    Debug.Print "a is not IsNull" 
End If

 

 こんな感じで書いてみると、結果はこうなりました。

 

 a is not Null
 a is not <>Null
 a is IsNull

 

 1番目と2番目の結果が相反するように見えるけど(ともにElse側を通過)、なんとなくは想像できます。あまり明快な答えはないですが、C言語でいうポインタなんだろうなくらいしか検討がついてないです。

 

 要はIsNullを使えば良いってことではするのですが、少しはまりました。

スポンサーリンク