データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
失礼しました。
錯覚して半端なレスをいれました。
日付に関して裏表がわかっているつもりはありませんが、VBAのDateValue 関数はヘルプによれば、
DateValue(date)
引数 date は必ず指定します。引数 date には、通常、100 年 1 月 1 日から 9999 年 12 月 31 日までの範囲の日付を表す文字列式を指定します。
となっていますので、212年もエラーにはならないわけです。
また、Date型は
日付型 (Date) の変数は、IEEE 64 ビット (8 バイト) の浮動小数点数の変数です。西暦 100 年 1 月 1 日~西暦 9999 年 12 月 31 日の範囲の日付と、0:00:00 ~ 23:59:59 の範囲の時刻を表すことができます。
と言う事でワークシートの扱いと異なります。
ですから、年数部分はシートに入れればエラーになる場合も正常に処理してしまっているわけです。
で解決策ですが、エラーに引っかからない場合年に関するチェックを入れたらいかがでしょうか?
例えば2000以降でなければエラーとして扱うなどです。
(Year 関数は正常な値を返してくれます)
Sub ccc()
Dim X As String, y As Date
X = "212/10/3"
y = DateValue(X)
MsgBox Year(y)
End Sub
参考まで。