ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Discussion (Misc queries) (https://www.excelbanter.com/excel-discussion-misc-queries/)
-   -   Date/Time Macro Puzzle (https://www.excelbanter.com/excel-discussion-misc-queries/17681-date-time-macro-puzzle.html)

Michael Link

Date/Time Macro Puzzle
 
Hi, everyone--

Here is a macro that deposits the date and time into a cell, but which =
is=20
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 =3D "It's after 5:00 PM! Click OK to enter time, but please =
remember=20
to enter TOTAL HOURS WORKED TONIGHT in the yellow box at right.=20
Thanks!"
mBoxStyle =3D 64
mTitle =3D "AFTER-HOURS ENTRY"

With ActiveCell

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

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

End With

End Sub

The puzzle is this: in its current formulation, a warning box NEVER =
appears,=20
regardless of the time of day. However, if I reverse the sign in the=20
"If...Then" clause to <, a warning box ALWAYS appears, again regardless =
of=20
the time of day. (I have tried replacing the 17/24 designation with its=20
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=20
appear only after 5:00 PM? I appreciate your help--this is driving me =
nuts!



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


Michael Link

I'll give it a shot! Unfortunately I need to go to a meeting, so it's =
going to be=20
a while before I can test this out, but at least I've got something to =
try when=20
I come back.
-----Original Message-----
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 =3D 61200 Then

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

Dave O

.



All times are GMT +1. The time now is 08:41 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com