成功计算后运行时错误5

时间:2016-04-15 17:39:22

标签: excel vba excel-vba runtime-error

我正在开发一个流程,根据月度返回数据自动计算3年滚动回报。以下是产生错误的代码部分:

Set rolling_returns = Range([c41], [c41].End(xlDown))

start_no_begin = 6
start_no_end = 41

For Each calc In rolling_returns

reference_begin = "C" & start_no_begin
reference_end = "C" & start_no_end

    Set calculation1 = Range(reference_begin, reference_end)

     calc.Offset(0, 3) = ((WorksheetFunction.Product(calculation1)) - 1) ^ (1 / 3)
     'why is this getting stopped after a certain amount of calculations??

    start_no_begin = start_no_begin + 1
    start_no_end = start_no_end + 1

Next

我的代码运行了175次迭代,然后我收到错误。我手动重现了计算,没有错误,所以我不认为这是一个数据问题。这可能是一个记忆问题吗?

1 个答案:

答案 0 :(得分:0)

检查此thread - 基本上说您可以使用WorksheetFunction.Power函数代替直接使用小数指数。

您的代码不会降低尝试获取-1的多维数据集根的风险,因为calculation1的生成可能为零而您扣除1。

所以你的代码变成了:

calc.Offset(0, 3) = WorksheetFunction.Power(((WorksheetFunction.Product(calculation1)) - 1), 3)

我建议您查看正在发生的事情,因为您的代码已达到您正在处理的数据范围的底部。如果您在循环结束时拾取空单元格,那么WorksheetFunction.Product函数通常会跳过这些单元格,但值得检查特定例程中发生的情况。