- ベストアンサー
VB6で時刻の範囲に入っているか調べる方法
- VB6で時刻の範囲に入っているかを調べる関数を作りたいけど、具体的なアルゴリズムがわからない。
- Now、DateDiff、DateSerialを使えばよさそうだけど、日がまたがった場合の判定方法が分からない。
- 開始時刻と終了時刻を取得して、現在の時刻がその範囲に入っているか判定する方法を教えてほしい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
再びNo.1です 判定を2つ通さないといけないでしょうね 当日分でダメなときは、前日分もチェックしてみる varNow = Now ' Now 関数は現在の日付と時刻を返します。 ' 開始時刻と終了時刻 varFrom = DateSerial(Year(varNow), Month(varNow), Day(varNow)) + TimeSerial(intFromHour, intFromMin, 0) ' 開始時刻 varTo = DateSerial(Year(varNow), Month(varNow), Day(varNow)) + TimeSerial(intToHour, intToMin, 0) ' 終了時刻 ' 開始時刻と終了時刻の整合性 If varFrom >= varTo Then varTo = varTo + 1 ' 判定(1) If varNow >= varFrom And varNow <= varTo Then MsgBox "OK!" Else ' 判定(2) varFrom = varFrom - 1 varTo = varTo - 1 If varNow >= varFrom And varNow <= varTo Then MsgBox "OK!" Else MsgBox "NG!" End If End If
その他の回答 (2)
- how-do-you-do
- ベストアンサー率56% (59/104)
No.1です 失礼、If文の条件式を間違えていました × If varNow >= varFrom And varNow >= varTo Then ○ If varNow >= varFrom And varNow <= varTo Then
- how-do-you-do
- ベストアンサー率56% (59/104)
この「varNow」「varFrom」「varTo」変数は、Date型の変数ですよね (バリアント型ですか?たぶん右辺がDate型なので大丈夫ですが...) Date型変数は、シリアル値で格納されています (整数部は日付、少数部は時間、詳しくはHELPで...) 日付情報が入っていると思われるので、 判定方法は、下記で大丈夫だと思います。 If varNow >= varFrom And varNow >= varTo Then MsgBox "OK!" Else MsgBox "NG!" End If また日付情報が入っていない場合には、 24時間以内と限定して下記の様になります。 If varFrom >= varTo Then varTo = varTo + 1 If varNow >= varFrom And varNow >= varTo Then MsgBox "OK!" Else MsgBox "NG!" End If 参考になれば...
補足
早い回答ありがとうございます。 DIM宣言ではDate型にしていたのですが、変数名自体を変えるのを忘れていました。おっしゃる通りDate型ですね。^ ^ varFromとvarToは時間と分をテキストボックスで入力させているので、日付情報は自力でつける必要があります。 たとえば7:00~3:00とした場合(20時間という事です)、今2:00です。こういう場合も範囲に入っていると判断したいのです。ひぃ~(@ @) 一眠りして頭をすっきりさせてから、考えなおしてみます。
お礼
ご報告が遅くなってしまいました。 一時はどうなることかと思いましたが、おかげ様で無事に完成させる事ができました。 本当にありがとうございました。
補足
おはようございます。 夜遅くに回答を頂きありがとうございます! これから確かめてみます。 varTo+1は、日付は整数部なので1足すだけで日付の加算ができるのですね。