运行时错误5成功计算后

我正在开发一个stream程,根据月度回报数据自动计算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次迭代,然后我得到错误。 我手动复制了计算,没有错误,所以我不认为这是一个数据问题。 这可能是一个记忆问题?

检查这个线程 – 基本上说,你可以使用WorksheetFunction.Power函数来代替直接使用小数指数。

您的代码不会降低尝试占用-1的立方体根的风险,因为calculation1 1的生成可能为零,并且您扣除1。

所以你的代码变成:

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

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