Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 553
Default Status Bar with ETA calculation

Can somebody tell me why this is not working. Iam trying to incorporate this
ETA calc into a statusbar. When I say ETA I mean I am tyring to calculate
how much time is left in running the loop. The status keeps displaying the
same number. IT should be getting smaller over time and eventually hit 0.

Thanks

Sub Main()
Dim Start As Date
Dim CurIteration As Double
Dim X As Double

Start = Now()

X = 100000

For CurIteration = 1 To X
Application.StatusBar = ETA(Start, X, CurIteration)
Next

End Sub


Function ETA(StartTime As Date, NumOfIterations As Double, CurrentIteration
As Double) As String
ETA = Format((Now() - StartTime) / (CurrentIteration / NumOfIterations)
+ StartTime, "h:mm:ss")
End Function

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Status Bar with ETA calculation

For CurIteration = 1 To X
Application.StatusBar = ETA(Start, X, CurIteration)
doevents
Next

--
Regards,
Tom Ogilvy


"ExcelMonkey" wrote in message
...
Can somebody tell me why this is not working. Iam trying to incorporate
this
ETA calc into a statusbar. When I say ETA I mean I am tyring to calculate
how much time is left in running the loop. The status keeps displaying
the
same number. IT should be getting smaller over time and eventually hit 0.

Thanks

Sub Main()
Dim Start As Date
Dim CurIteration As Double
Dim X As Double

Start = Now()

X = 100000

For CurIteration = 1 To X
Application.StatusBar = ETA(Start, X, CurIteration)
Next

End Sub


Function ETA(StartTime As Date, NumOfIterations As Double,
CurrentIteration
As Double) As String
ETA = Format((Now() - StartTime) / (CurrentIteration / NumOfIterations)
+ StartTime, "h:mm:ss")
End Function



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Status Bar with ETA calculation

Unless I'm missing something this will always display the ETA, which over
time gets more 'accurate' until finally displaying the done time. Why do you
expect it to get "smaller over time and eventually hit 0" ?

A progress meter of this sort, whether it displays an ETA or %age can
dramatically increase the overall time of the main routine. Suggest only
calculate periodically and only update, including making the Format string,
if not same as previous update. Also I wouldn't use Now() except to initiate
the time, then use an API such as Gettickcount.

Regards,
Peter T

"ExcelMonkey" wrote in message
...
Can somebody tell me why this is not working. Iam trying to incorporate

this
ETA calc into a statusbar. When I say ETA I mean I am tyring to calculate
how much time is left in running the loop. The status keeps displaying

the
same number. IT should be getting smaller over time and eventually hit 0.

Thanks

Sub Main()
Dim Start As Date
Dim CurIteration As Double
Dim X As Double

Start = Now()

X = 100000

For CurIteration = 1 To X
Application.StatusBar = ETA(Start, X, CurIteration)
Next

End Sub


Function ETA(StartTime As Date, NumOfIterations As Double,

CurrentIteration
As Double) As String
ETA = Format((Now() - StartTime) / (CurrentIteration /

NumOfIterations)
+ StartTime, "h:mm:ss")
End Function



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 553
Default Status Bar with ETA calculation

Peter you are bang on the money. I realised after posting it that I asked
the wrong question. What I really want is it to calculate home much time is
left before the routine is finished. As written it estimates that that
actual finished time is.

EM

"Peter T" wrote:

Unless I'm missing something this will always display the ETA, which over
time gets more 'accurate' until finally displaying the done time. Why do you
expect it to get "smaller over time and eventually hit 0" ?

A progress meter of this sort, whether it displays an ETA or %age can
dramatically increase the overall time of the main routine. Suggest only
calculate periodically and only update, including making the Format string,
if not same as previous update. Also I wouldn't use Now() except to initiate
the time, then use an API such as Gettickcount.

Regards,
Peter T

"ExcelMonkey" wrote in message
...
Can somebody tell me why this is not working. Iam trying to incorporate

this
ETA calc into a statusbar. When I say ETA I mean I am tyring to calculate
how much time is left in running the loop. The status keeps displaying

the
same number. IT should be getting smaller over time and eventually hit 0.

Thanks

Sub Main()
Dim Start As Date
Dim CurIteration As Double
Dim X As Double

Start = Now()

X = 100000

For CurIteration = 1 To X
Application.StatusBar = ETA(Start, X, CurIteration)
Next

End Sub


Function ETA(StartTime As Date, NumOfIterations As Double,

CurrentIteration
As Double) As String
ETA = Format((Now() - StartTime) / (CurrentIteration /

NumOfIterations)
+ StartTime, "h:mm:ss")
End Function




  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 553
Default Status Bar with ETA calculation

Here is how to calc time left to completion.

Sub Main()
Dim Start As Date
Dim CurIteration As Double
Dim X As Double

Start = Now()

X = 1000000

For CurIteration = 1 To X
Application.StatusBar = ETA(Start, X, CurIteration)
Next

End Sub


Function ETA(StartTime As Date, NumOfIterations As Double, CurrentIteration
As Double) As String
Dim RightNow As Date
RightNow = Now()
ETA = Format(((RightNow - StartTime) / (CurrentIteration /
NumOfIterations) + StartTime) - RightNow, "h:mm:ss")
End Function


"ExcelMonkey" wrote:

Can somebody tell me why this is not working. Iam trying to incorporate this
ETA calc into a statusbar. When I say ETA I mean I am tyring to calculate
how much time is left in running the loop. The status keeps displaying the
same number. IT should be getting smaller over time and eventually hit 0.

Thanks

Sub Main()
Dim Start As Date
Dim CurIteration As Double
Dim X As Double

Start = Now()

X = 100000

For CurIteration = 1 To X
Application.StatusBar = ETA(Start, X, CurIteration)
Next

End Sub


Function ETA(StartTime As Date, NumOfIterations As Double, CurrentIteration
As Double) As String
ETA = Format((Now() - StartTime) / (CurrentIteration / NumOfIterations)
+ StartTime, "h:mm:ss")
End Function

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Returning calculation status Phil H Excel Worksheet Functions 1 August 14th 08 06:03 PM
reuest formula for auto update status & status date PERANISH Excel Worksheet Functions 5 June 2nd 08 04:26 PM
Calculation appear on status bar when in autocalc mode RiverGully Excel Discussion (Misc queries) 4 October 20th 07 09:03 AM
STATUS BAR LENGHT OF CALCULATION BOX Chris Excel Discussion (Misc queries) 1 November 16th 06 05:16 PM
Check calculation status Jeff Excel Programming 2 November 25th 03 04:23 PM


All times are GMT +1. The time now is 02:38 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"