nenonenoです。こんばんわ。
VBで時間Aから時間Bの範囲に時間Cが入っているかを調べる関数を作ろうとしていますが、初心者なので混乱しています。
Now,DateDiff、DateSerialを使えばよさそうな事は分かったのですが、、、具体的なアルゴリズムが思い浮かびません。
時間A(7:00)、時間B(18:00)、時間C(今)の場合は問題ないのですが、時間Aが(21:00)、時間Bが(7:00)、時間C(今)になった時(つまり、日がまたがった場合)にお手上げです。
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) ' 終了時刻
ここまでは書いたのですが、どう判定させて計算したらよいのでしょうか?
なにか、ヒントだけでも教えていただけるとありがたいです。
よろしくお願いします。
No.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
この回答への補足
おはようございます。
夜遅くに回答を頂きありがとうございます!
これから確かめてみます。
varTo+1は、日付は整数部なので1足すだけで日付の加算ができるのですね。
ご報告が遅くなってしまいました。
一時はどうなることかと思いましたが、おかげ様で無事に完成させる事ができました。
本当にありがとうございました。
No.2
- 回答日時:
No.1です
失礼、If文の条件式を間違えていました
× If varNow >= varFrom And varNow >= varTo Then
○ If varNow >= varFrom And varNow <= varTo Then
No.1
- 回答日時:
この「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です。こういう場合も範囲に入っていると判断したいのです。ひぃ~(@ @)
一眠りして頭をすっきりさせてから、考えなおしてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 指定した値以上の中で最小値を出したい 7 2022/10/24 21:12
- その他(Microsoft Office) エクセル 条件付き書式 日をまたぐ塗りつぶし 1 2023/01/13 18:00
- Excel(エクセル) エクセル2019の関数を教えてください。 8 2022/12/16 12:45
- MySQL ある時間以内の利用者の抽出について 3 2022/03/26 11:15
- Excel(エクセル) 時間差を求めるマクロコードを教えてください。 4 2022/05/17 18:22
- その他(教育・科学・学問) エクセル関数について 2 2022/12/23 08:59
- その他(Microsoft Office) 勤務表のエクセル作成で数式を教えてください。 1 2023/01/17 03:27
- Windows 10 パソコンを再起動、起動するたびに時間が戻る。 7 2022/10/20 06:01
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- エアコン・クーラー・冷暖房機 日立のエアコンのリモコン 5 2023/04/01 00:25
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VB6 開発環境のエディタに行番号を表示
Visual Basic(VBA)
-
VBからPDFファイル自動生成するには
Visual Basic(VBA)
-
VisualBasic6.0のFormat関数でmSecを表示したい
Visual Basic(VBA)
-
-
4
frxファイルの役目
Visual Basic(VBA)
-
5
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
6
VB6 配列を初期化したい
Visual Basic(VBA)
-
7
[VB6] フォームを閉じる方法について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGridViewでyyyy/MM/dd
-
VisualBasic6.0のFormat関数で...
-
「eclipseで作るカレンダー(ス...
-
VBAで日付入力しているのですが
-
今日より前の書き方 マクロ
-
ユーザーフォームのラベルに日...
-
VB 日付範囲チェック
-
C++で日付判定を行いたい!!
-
システム日付とは?
-
【Excel VBA】条件に合った行の...
-
<Access>2つの抽出条件が合致...
-
【VBA】土日をスキップして日付...
-
エクセルのユーザーフォームに...
-
ExcelVBAでSQLサーバの日付時刻...
-
g08のロック画面の日付表示の変更
-
エクセルVBAで機械の稼働時間を...
-
VB6で時刻の範囲に入っているか...
-
VBA 日付・時刻の判別 時刻を認...
-
C#で日付をdateTimePickerに読...
-
Google Feed APIの将来記事の取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
ユーザーフォームのラベルに日...
-
VBAの質問になります 行の非表示
-
エクセルのVBAで日付を検索し転...
-
VisualBasic6.0のFormat関数で...
-
DataGridViewでyyyy/MM/dd
-
3人のじゃんけんのプログラム
-
システム日付とは?
-
コンボボックスに日付を表示する
-
今日より前の書き方 マクロ
-
【VBA】土日をスキップして日付...
-
エクセルVBAで機械の稼働時間を...
-
VBA 日付、未来の日付はエラー...
-
DataGridViewの和暦表示について
-
VBAで当月の1日を表示するには...
-
「eclipseで作るカレンダー(ス...
-
テキストボックスにカレンダー...
-
ExcelVBAでSQLサーバの日付時刻...
-
【Excel VBA】条件に合った行の...
-
VBAのapplication.ontime メソ...
おすすめ情報