| 
    
     |  | ▼ichinose さん: こんばんは。
 
 すっすごいです。
 まったくしらなかった構文です。。。
 読んでも理解できなかったので、とりあえず
 実行してみると、、、。
 
 なるほど〜。へぇ〜。感動!でした。
 
 私のイメージからすると、TypeName(rng.Value)
 のイメージです。
 ただ、この場合、日付値に入りきらない大きい数字
 が入った場合は、オーバーフローでエラーに
 なってしました。
 
 そして、、、ちょっとお恥ずかしいのですが
 たけさんのISDTAEで良いのでは?という
 アドバイスを頂いて、試してみると、これが良好。。。
 
 スミマセン、、、。
 
 なぜ、ISDATE以外と拘ったのかと言いますと、
 自分で前にテスト?してみたときは、何かが間違って
 いたのだと思うのですが、DATE型のデータを
 ISDATEに入れてもちゃんとした判定が出来なかったのです。
 
 それで、ISDATEは、文字→日付に変換出来るかどうかの
 チェック用関数だと思い込んでいました。
 
 ここがそもそもの出発点(間違い)です。
 
 私の大きな勘違いに対して、親切に回答していただき
 大変感謝しています。
 また、新しい発見をさせていただいた事にも
 大変感謝です。
 
 ありがとうございました!
 
 >▼hito さん:
 >こんばんは。
 >
 >
 >>
 >>日付のチェックをおこなう際に、ISDATEを使えば、
 >>文字列("2006/1/1"など)の日付チェックは出来るのですが、
 >>そうではなく、日付値のデータを日付値のデータかどうか
 >>チェックしたいです。
 >セルにDate型で入力されているかということでしょうか?
 >それとも日付(Date型)に変換可能なという意味でしょうか?
 >(でも、これだと正の数は全部Trueですよね)
 >
 >
 >新規ブックの標準モジュールに
 >
 >'==========================================
 >Sub main()
 >  With Range("a1")
 >   .NumberFormatLocal = "yyyy/m/d"
 >   .Value = "2006/7/1"
 >   Call 判定も色々♪(.Cells(1))
 >   .NumberFormatLocal = "ge.m.d"
 >   Call 判定も色々♪(.Cells(1))
 >   .NumberFormatLocal = "gge.m.d"
 >   Call 判定も色々♪(.Cells(1))
 >   .NumberFormatLocal = "yyyy/m/d h:mm AM/PM"
 >   Call 判定も色々♪(.Cells(1))
 >   .NumberFormatLocal = "G/標準"
 >   Call 判定も色々♪(.Cells(1))
 >
 >   .NumberFormatLocal = "@"
 >   .Value = "2006/7/1"
 >   Call 判定も色々♪(.Cells(1))
 >   End With
 >End Sub
 >'======================================================
 >Sub 判定も色々♪(rng As Range)
 >  MsgBox rng.Text & vbCrLf & TypeName(rng.Value) & _
 >           vbCrLf & VarType(rng.Value) & _
 >           vbCrLf & IsDate(rng.Text) & _
 >           vbCrLf & IsDate(rng.Value)
 >
 >End Sub
 >
 >
 >mainを実行してみて下さい。
 >
 >どれかが採用出来ますか?
 
 
 |  |