MS Excel。 VBA函数返回#value

时间:2017-01-07 16:04:38

标签: vba excel-vba excel

如果有人可以解释导致上述函数返回#value错误的原因会很好。

Public Function papild(x)
    Dim Sum As Double, A As Double, pi As Double,
    Sum = 0.5 - (x - pi / 4)
    A = -(x - pi / 4)
    pi = Application.WorksheetFunction.pi()
    Dim k As Integer, i As Integer
    k = 2
    i = 0
    Do While Abs(A) > 0.0001
        A = -A * 4 * A * A / (k + i) * (k + i + 1)
        Sum = Sum + A
        k = k + 1
        i = i + 1
    Loop
    paplid = Sum
End Function

函数从MS Excel单元格获取x值,它等于= -1.5708(= -PI()/ 2 @Formula Bar)

2 个答案:

答案 0 :(得分:5)

在第3行和第4行中,在第5行设置之前使用变量pi ...

您的公式中是否会遗漏一些括号。它基本上说:

A = -4A^3 * (k+i+1)/(k+1)

这显然会漂移到+/-无限,所以你的循环不能结束。

第二行还有一个逗号太多,最后一行有拼写错误(paplid而不是papild)。

答案 1 :(得分:1)

您是否尝试过调试代码? 当我运行代码时,我得到一个溢出错误@在第6次迭代的while循环开始于x = -1.5708。数字变大以适应变量 除此之外还有一些小事: 缺少双倍

Public Function papild(x) As Double

最后不必要的逗号

Dim Sum As Double, A As Double, pi As Double,