日付型をチェックするIsDate関数ですが、日付型だからといって
入力チェックをIsDate関数のみで行っていると抜けがでます。
MSDNの説明によると「IsDate 関数は、指定した式が日付型 (Date) である場合、または日付型 (Date) に変換可能な文字列である場合は、True を返します。それ以外の場合は、False を返します。」
この"変換可能な文字列"が抜けの基です。
For i = 32 To 127
Str = "2007/04/3" & Chr(i)
If IsDate(Str) = True Then
Console.Write (Str & ":" & i)
End If
Next
下記が、IsDate関数で「True」として返ってきます。
2007/04/3 :32 半角スペース
2007/04/3,:44
2007/04/3.:46
2007/04/30:48
2007/04/3H:72
2007/04/3Z:90
2007/04/3h:104
2007/04/3z:122
※追記、数値チェックのIsNumeric関数にも同様な問題があります。
参照:http://homepage1.nifty.com/rucio/main/technique/InputChk2.htm