You can use the [ ] notation in Application.Evaluate to calculate array formulas in VBA. The above formula can be called in VBA in just 1 line , as shown below
Sub Sample() MsgBox Application.Evaluate(["=(PRODUCT(1+returns/100)-1)*100"]) End Sub
Now by changing it to accept a range in a function, you can also do this
Function returns_calc(rng As Range) As Variant On Error GoTo Whoa Dim frmulaStr As String frmulaStr = "=(PRODUCT(1+(" & rng.Address & ")/100)-1)*100" returns_calc = Application.Evaluate([frmulaStr]) Exit Function Whoa: returns_calc = "Please check formula string" 'or simply returns_calc = "" End Function
SCREENSHOT EXAMPLE

source share