Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


19802 / 76732 ←次へ | 前へ→

【62356】Re:時間外、時間内の判別方法
発言  kanabun  - 09/7/13(月) 21:45 -

引用なし
パスワード
   > A列には[2009/7/13 8:00:00]
> といったdate型の値が記入してあります。

すべてシリアル値で考えてみたらどうでしょ?

2009/7/13 8:00:00 をシリアル値にすると
                40007.3333333 です。
一方、
TimeSerial(9, 0, 0) のシリアル値は 0.375 です。
TimeSerial(17, 30, 0)のシリアル値は 0.729166666666667
です。

したがって
>------------------------------------------------
>    If TimeSerial(9, 0, 0) > sday Or _
>      sday > TimeSerial(17, 30, 0) Then
>      MsgBox "時間外"
>------------------------------------------------
の部分は、
>------------------------------------------------
  もし  0.375 > 40007.3333333 であるか
  または 40007.3333333 > 0.729166666666667 なら
     "時間外です"
>------------------------------------------------
と判定していることになります。
9:00 は A列の日付より常に大きいので Orの前は「偽」ですが、
17:00 はA列のDate+Timeより常に小さいので第2項は「真」となるため、
このIf文は常にTrueとなり、
>>ORの場合はsdayを何時に設定しても「時間外」になってしまう
となります。

>[sday]の部分を[Format(sday, "HH:NN:SS")]に変更しても駄目でした。
文字列とTimeSerialを比較しても不条理だと思います。
88 hits

【62351】時間外、時間内の判別方法 さくら 09/7/13(月) 16:49 質問
【62352】Re:時間外、時間内の判別方法 もも 09/7/13(月) 16:55 発言
【62353】Re:時間外、時間内の判別方法 さくら 09/7/13(月) 17:03 発言
【62354】Re:時間外、時間内の判別方法 kanabun 09/7/13(月) 17:27 発言
【62356】Re:時間外、時間内の判別方法 kanabun 09/7/13(月) 21:45 発言
【62358】Re:時間外、時間内の判別方法 Yuki 09/7/14(火) 7:52 発言
【62360】Re:時間外、時間内の判別方法 さくら 09/7/14(火) 10:42 お礼
【62361】Re:時間外、時間内の判別方法 kanabun 09/7/14(火) 10:56 発言
【62363】Re:時間外、時間内の判別方法 さくら 09/7/14(火) 13:40 お礼

19802 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free