Using SUM() in VBA

You need to use the loop to perform the calculation across all of the sheets, it's the most efficient way by the looks of things. As mentioned above you can type each range separately instead.

Might be worth converting the range your adding up to a double (or single, integer, etc) because sometimes VBA reads numbers as text.

v = v + Cdbl(Sheets(i).Range("B2"))

The reason why you're having issues with Application.WorksheetFunction.Sum("Sheet1:Sheet3!B2") is because if you type that formula into Excel, the range 'Sheet1:Sheet3!B2' won't be recognised by excel.

enter image description here

To use a Application.WorksheetFunction it has to work in excel outside of VBA.

Hope that helps.


I believe the issue with the worksheetfunction.sum is that it needs arguments to evaluate not string. WorksheetFunction.Sum("Sheet1!A1:A3") fails as well. However, this succeeds

Application.WorksheetFunction.Sum(Sheet1.Range("A1"), Sheet2.Range("A1"))

The Ranges could be whatever you like.