Date/Time Macro Puzzle

M

Michael Link

Hi, everyone--

Here is a macro that deposits the date and time into a cell, but which is
supposed to pop up a warning box when the time is after 5:00PM:

Sub NewDateAndTime()

Dim mPrompt As String
Dim mBoxStyle As Long
Dim mTitle As String
Dim mMsg As Variant

mPrompt = "It's after 5:00 PM! Click OK to enter time, but please remember
to enter TOTAL HOURS WORKED TONIGHT in the yellow box at right.
Thanks!"
mBoxStyle = 64
mTitle = "AFTER-HOURS ENTRY"

With ActiveCell

.Value = Now
.NumberFormat = "mm/dd/yy h:mm AM/PM"

If Now Mod 1 > 17 / 24 Then
mMsg = MsgBox(mPrompt, mBoxStyle, mTitle)
End If

End With

End Sub

The puzzle is this: in its current formulation, a warning box NEVER appears,
regardless of the time of day. However, if I reverse the > sign in the
"If...Then" clause to <, a warning box ALWAYS appears, again regardless of
the time of day. (I have tried replacing the 17/24 designation with its
decimal equivalent [about 0.708333], but the same problem occurs.)

I have no idea what's going wrong. Any ideas how to get the warning to
appear only after 5:00 PM? I appreciate your help--this is driving me nuts!
 
D

Dave O

There are probably a number of ways to skin this cat: one of them is to
use the Timer function, which returns the number of seconds elapsed
since midnight. In your case 5pm is 17 hours after midnight, which
equates to 17*60*60 or 61200 seconds. You could replace your code
If Now Mod 1 > 17 / 24 Then

.... with this:
If Timer >= 61200 Then

This method will save you a lot of conversion of time strings to
numeric, etc.

Dave O
 
M

Michael Link

I'll give it a shot! Unfortunately I need to go to a meeting, so it's going to be
a while before I can test this out, but at least I've got something to try when
I come back.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top