Hi Hot,
In general there is no way to do this because the run time is determined by data values that may or may not be under VBA control. For example, say you have a macro that processes every row containing data on a worksheet. The macro takes twice as long to process 10000 rows as it takes to process 5000 rows. But if it determines the number of rows to process at run time how can it possibly know in advance how long it will take?
All that being said, if your macro is not data-dependent so that the run time is very predictable, or even constant, then a countdown timer is very feasible because you can base the estimated run time on a previous run's run time. You can then use the VBA Timer function to calculate the time periodically during the run and subtract it from the estimated end time to get the time remaining.