• ベストアンサー

日付を比較したいのですが

こんにちは。 2つのテキストボックスそれぞれに入っている日付を 同じ日付または次の日ならOKでそれ以外ならエラーを出すように比較したいのですが、 次の日をどのように表したらいいのか分かりません。 始めは、テキストボックスに入っている日付を文字列で"20010329"のように表して、 これと同じか "+1"ならOKとしていたのですが、 よく考えたら3月31日と4月1日なら"20010331"と"20010401"となり うまくいきません。 何か良い方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tom777
  • ベストアンサー率77% (14/18)
回答No.3

日付が正しく6桁で入力されているという前提で、以下のよ うにしてはどうでしょうか? '************************************************* sDate = "20010331" sDate2 = "20010401" sDate = Left$(sDate ,4) & "/" & Mid$(sDate, 5, 2) & "/" & Mid$(sDate, 7, 2) sDate2 = Left$(sDate2 ,4) & "/" & Mid$(sDate2, 5, 2) & "/" & Mid$(sDate2, 7, 2) If DateValue(sDate2) - DateValue(sDate) = 0 then Msgbox "同じ日付" Elseif DateValue(sDate2) - DateValue(sDate) = 1 then Msgbox "次の日" Else Msgbox "それ以外" End If '************************************************* みばえが悪いので適当に修正してください。 変数等は宣言してください。 以上、参考になれば幸いです。

oohchan
質問者

お礼

こんにちは。早速ご返事ありがとうございました。 tom777さんの教えて下さったのを参考にして、修正してうまく動作するように なりました。 本当にありがとうございました。もっともっと勉強して一人前になれるように がんばります。

その他の回答 (2)

  • wyvern0
  • ベストアンサー率32% (54/165)
回答No.2

DateDiff関数を使用してはどうでしょうか。 ご質問の日付を使って記述例を挙げてみます。 If DateDiff("d", "2001/03/31","2001/04/01") = 1 Then これで翌日を判断することができるはずです。 ちなみに"d"は時間間隔モードで、日での比較を行うという意味です。 この方法ならテキストボックスからの値で比較できるのではないでしょうか。 (内部処理はDate型です)

oohchan
質問者

お礼

こんにちは。早速ご返事ありがとうございました。 教えていただいた通り、DateDiff関数を使って翌日判定が できました。 本当にありがとうございました。 もっともっと勉強して、早く一人前になれるようにがんばります。

回答No.1

テキストボックスじゃなくて、DateTimePickerとかを使ったほうが、日付入力は簡単だと思います。 日付の比較は、Date型の変数で行うといいでしょう。

oohchan
質問者

お礼

こんにちは。早速、ご返事ありがとうございます。 DateTimePickerっていうのがあったんですね~。 早速ヘルプで調べてみました。 テキストボックスのがうまく動作するようになったので、こちらでも チャレンジしたいと思います。 本当にありがとうございました。

関連するQ&A