Hi:

First point with regards to your code: You don't want to say ActiveSheet.Calculate. The code WILL go through all the sheets in the workbook, but only the ACTIVE sheet will be recalculated. You want the code changed to:

For Each MySheet In ActiveWorkbook.Sheets
MySheet.Calculate
Next MySheet

Hopefully you can follow that explanation, if not, please let me know and I will elaborate further.

Second point with regards to calculation: Choosing calculate through vba will not make your spreadsheet calculate faster than F9.

You need to examine your spreadsheet regarding the organization of data and the functions used. Especially recursive functions (array formulas etc...) and for redundant formulas.