[リストへもどる]
一括表示

投稿時間:2003/12/16(Tue) 10:23
投稿者名:孤軍奮闘
URL :
タイトル:
日付の問題!!
テキストボックスに"03/13/02"と間違った日付を日付型の内部変数へ代入すると2002/03/13になってしまうのですが、このような場合のデータチェックとして良い方法を教えてください

投稿時間:2003/12/16(Tue) 10:41
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re: 日付の問題!!
テキストボックスで受け付ける日付の形式がどんなものかは分かりませんが、今回の場合なら

    If Text1.Text = Format$(Text1.Text, "yy/mm/dd") Then
        Debug.Print "正しい日付"
    Else
        Debug.Print "間違った日付"
    End If

とかどうでしょう?

投稿時間:2003/12/16(Tue) 11:16
投稿者名:ak
Eメール:
URL :
タイトル:
Re: 日付の問題!!
> テキストボックスに"03/13/02"と間違った日付を日付型の内部変数へ代入すると2002/03/13になってしまうのですが、このような場合のデータチェックとして良い方法を教えてください

こんにちは。

nanashiさんの
>If Text1.Text = Format$(Text1.Text, "yy/mm/dd") Then
の条件だけでは判断できません。

例えはText1に『あああああ』や『12/34/56』などが入った場合はそのまま
値が返ってきまのでこの前にIsDate関数で日付型かどうかチェックが必要か
と思います。

補足
 国によって日付の表示形式が異なりますので"03/13/02"は間違った日付で
 はありません。
 日付は年月日それぞれ分けて入力させてあげる方がユーザーも分かりやすい
 ですし、エラー処理も簡単になると思います。

投稿時間:2003/12/16(Tue) 11:36
投稿者名:孤軍奮闘
URL :
タイトル:
Re^2: ありがとうございます
> > テキストボックスに"03/13/02"と間違った日付を日付型の内部変数へ代入すると2002/03/13になってしまうのですが、このような場合のデータチェックとして良い方法を教えてください
>
> こんにちは。
>
> nanashiさんの
> >If Text1.Text = Format$(Text1.Text, "yy/mm/dd") Then
> の条件だけでは判断できません。
>
> 例えはText1に『あああああ』や『12/34/56』などが入った場合はそのまま
> 値が返ってきまのでこの前にIsDate関数で日付型かどうかチェックが必要か
> と思います。
>
> 補足
>  国によって日付の表示形式が異なりますので"03/13/02"は間違った日付で
>  はありません。
>  日付は年月日それぞれ分けて入力させてあげる方がユーザーも分かりやすい
>  ですし、エラー処理も簡単になると思います。

nanashiさん,akさんの内容を組合わせてうまくいきました!!
年月日を分けることも考えたのですが、閏年チェックなどの
チェックロジックが増えてしまうことが・・・でしたので

投稿時間:2003/12/16(Tue) 11:43
投稿者名:ak
Eメール:
URL :
タイトル:
Re^3: ありがとうございます
> 年月日を分けることも考えたのですが、閏年チェックなどの
> チェックロジックが増えてしまうことが・・・でしたので

IsDate関数で閏年のチェックも行えますよ。

IsDate("2003/02/29")はFalseが返ってきます。
IsDate("2004/02/29")はTrueが返ってきます。