2014年6月28日土曜日

VBAの関数は、Nullでもエラーにならない

VBAの関数で引数にNullを指定してもエラーとならないのは、深い知識が無くても使えるための言語仕様だと思うけど、想定外の結果を招くことがある。
例えば
If Month(Null) > 3 Then
  Debug.Print "Null > 3"
Else
  Debug.Print "Null <= 3 !?"
End If


<処理結果>
Null <= 3 !?
こういう場合に Else だけでは想定外の結果となる。


ただし、数値と文字の比較ではエラーとなる。
例えば
If 3 < "" Then Debug.Print "3 < ''"

<処理結果>
13 VBAProject 型が一致しません。