Calculating times under the second

S

SergioBS

Hi Everybody!

One question:

I want to calculate the time elapsed from a certain moment, for this purpose
I stored in "A" the value of Now() at the "start" and I read again and
Stored in "B" the value of Now() at the "Stop".

Although I have used the following to format the cell:
Selection.NumberFormat = "mm\:ss.00;@"

in the following statement:
Range("A1")= B-A

I cannot read in A1 any value under the second... how is it possible to
count also that small times?

Thank you for your help

Sergio
 
J

Jake Marx

Hi Sergio,

If you're running a PC and not a Mac, then the Timer function should work
for you:

Sub test()
Dim a As Single
Dim b As Single

a = Timer
Application.Wait Now + TimeSerial(0, 0, 5)
b = Timer
Range("A1").Value = b - a
End Sub

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]
 
J

JWolf

Jake:
I may be mistaken, but when I first started using Excel 5 under Win
3.11, the now function would capture fractions of a second. It doesn't
now. Do you know when MS changed this?
 
J

Jake Marx

Hi JWolf,
I may be mistaken, but when I first started using Excel 5 under Win
3.11, the now function would capture fractions of a second. It
doesn't now. Do you know when MS changed this?

I'm not exactly sure when/if this happened. I don't remember Now() ever
having much resolution.

As of now, however, this is how each method stacks up as far as resolution
goes (working from memory here):

Now(), Date(), Time(): about 1 second
Timer, Timer control, GetTickCount API: 10-12ms (15-18 for OSes prior to
NT4)
TimeGetTime API: 1ms
QueryPerformanceCounter API: (almost) limitless

I can't think of too many cases in VBA that you would need anything better
than Timer, but anything's possible I suppose.

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]
 
S

SergioBS

Hi Jake!

Thank you!

It still works, but it gives seconds as unit, so I have to divide it by
57600 to have it in the usual format....but I can get 1/1000 seconds!!

Regards

Sergio
Jake Marx said:
Hi Sergio,

If you're running a PC and not a Mac, then the Timer function should work
for you:

Sub test()
Dim a As Single
Dim b As Single

a = Timer
Application.Wait Now + TimeSerial(0, 0, 5)
b = Timer
Range("A1").Value = b - a
End Sub

--
Regards,

Jake Marx
MS MVP - Excel
www.longhead.com

[please keep replies in the newsgroup - email address unmonitored]

Hi Everybody!

One question:

I want to calculate the time elapsed from a certain moment, for this
purpose I stored in "A" the value of Now() at the "start" and I read
again and Stored in "B" the value of Now() at the "Stop".

Although I have used the following to format the cell:
Selection.NumberFormat = "mm\:ss.00;@"

in the following statement:
Range("A1")= B-A

I cannot read in A1 any value under the second... how is it possible
to count also that small times?

Thank you for your help

Sergio
 
Top