1. I'd make d1, a, and n Long but that did not cause the overflow
2. I figure Excel tried to calculate (100 * a * n) as an Integer since 100, a, and n were Integers
100 x 20 x 56 = 112,000 and that was the Integer overflow
You can
a. Make the 100 a floating point Double constant and it works (i.e. 100.0 which Excel displays a 100#)
or
b. Dim D1, a, and n as Long
or
c. Both a and b above
Function funcd1(p0 As Double, d1 As Long, a As Long, n As Long, Y As Double) As Double
funcd1 = Y - p0 * Y - ((d1 - 100) * p0 ^ (1 - n) * (a * p0 ^ n - 1) * Y / (100# * a * n))
End Function