|
▼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を実行してみて下さい。
>
>どれかが採用出来ますか?
|
|