Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Excel: Recalculating every x seconds

Tags:

excel

vba

One of my spreadsheets deals with various calculations involving, among other things, the current date and time and it would be nice to have it automatically refresh itself once in a while instead of manually having to either press F9 or altering one of the cells.

Is there some way in Excel to set a spreadsheet to automatically recalculate itself every x seconds?

I haven't been able to find a setting in Excel itself, perhaps indicating that no such feature exists. If not, can this be achieved with VBA? (The latter may or may not sound like a silly question, but I have no prior experience with writing Excel macros and as such have no idea what its capabilities are in terms of manipulating spreadsheets.)

like image 387
BambooleanLogic Avatar asked Jul 29 '13 12:07

BambooleanLogic


People also ask

When does recalculation occur in Excel?

When calculation is set to automatic, recalculation occurs after every data input and after certain events such as the examples given in the previous section. For very large workbooks, recalculation time might be so long that users must limit when this happens, that is, only recalculating when they need to.

Why is my Excel recalculation time so slow?

Excel reevaluates cells that contain volatile functions, together with all dependents, every time that it recalculates. For this reason, too much reliance on volatile functions can make recalculation times slow.

How to recalculate all cells in all open workbooks?

All Open Workbooks Tree Rebuild and Forced Calculation Keystroke: CTRL+ALT+F9 VBA: Application.CalculateFull C API: Not supported All modes Recalculates all cells in all open workbooks. If the calculation mode is Automatic Except Tables, it forces the tables to be recalculated. See also Multithreaded Recalculation in Excel Data Types Used by Excel

How do you recalculate a dirty cell in Excel?

This recalculation occurs immediately after Excel finishes marking cells as dirty if the recalculation mode is automatic; otherwise, it occurs later. Starting in Microsoft Excel 2002, the Rangeobject in Microsoft Visual Basic for Applications (VBA) supports a method, Range.Dirty, which marks cells as needing calculation.


2 Answers

This code will create a clock, updated every 10 seconds.
Note that it only refreshes specific cells, and not the entire workbook - this means that you can leave the calculation options at whatever you are happy with:

Dim SchedRecalc As Date

Sub Recalc()
'Change specific cells
Range("A1").Value = Format(Now, "dd-mmm-yy")
Range("A2").Value = Format(Time, "hh:mm:ss AM/PM")
'or use the following line if you have a cell you wish to update
Range("A3").Calculate

Call StartTime ' need to keep calling the timer, as the ontime only runs once
End Sub

Sub StartTime()
SchedRecalc = Now + TimeValue("00:00:10")
Application.OnTime SchedRecalc, "Recalc"
End Sub

Sub EndTime()
On Error Resume Next
Application.OnTime EarliestTime:=SchedRecalc, _
        Procedure:="Recalc", Schedule:=False
End Sub

and, to make sure it stops, in the This Workbook module:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
EndTime
End Sub
like image 86
SeanC Avatar answered Oct 13 '22 12:10

SeanC


Goto Developer Visual basic Editor - Right Click workbook - insert module (make sure you have manual calculation

in the module

Sub run_over
Timetorun = Now + timevalue("00:00:10")
application.ontime timetorun,"Refresh_all"
End Sub

Sub Refresh_all
Activeworkbook.Refreshall
End Sub

Sub auto_close()
Application.OnTime timetorun, Refresh_all, , False
End Sub

Change the timing in "00:00:00" format as required

like image 36
Vasim Avatar answered Oct 13 '22 12:10

Vasim