![]() |
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! |
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 |
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