2014年6月29日日曜日

[VBA] 文字列と数値を比較しても、エラーにならないケース

VBAでは、関数の戻り値と異なるデータ型を比較してもエラーとならない。
例えば
If 3 < Left("ABC", 1) Then
  Debug.Print "3 < A"
Else
  Debug.Print "3 >= A"
End If

<処理結果>
3 < A


ただし、数値と文字のリテラルを比較すると実行時エラーとなるので、方式が統一されているわけではない。
例えば
If 3 < "A" Then
  Debug.Print "3 < A"
End If

<処理結果>
実行時エラー13:型が一致しません。