|
> 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を比較しても不条理だと思います。
|
|