Vba 计算成功后出现运行时错误5
我正在开发一个基于月度回报数据自动计算3年滚动回报的流程。以下是我的代码中产生错误的部分:Vba 计算成功后出现运行时错误5,vba,excel,runtime-error,Vba,Excel,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
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次迭代,然后我得到了错误。我已经手动复制了计算结果,没有错误,所以我认为这不是数据问题。这可能是内存问题吗?检查一下-基本上说,您可以使用工作表函数.Power
函数来代替直接使用分数指数
您的代码不会降低尝试获取-1的立方根的风险,因为calculation1
的结果可能为零,您将扣除1
因此,您的代码变成:
calc.Offset(0, 3) = WorksheetFunction.Power(((WorksheetFunction.Product(calculation1)) - 1), 3)
我建议您在代码到达正在处理的数据范围的底部时查看发生了什么。如果在循环结束时拾取空单元格,则工作表函数.Product
函数通常会跳过这些单元格,但值得检查特定例程中发生的情况 看看这个-基本上说你可以使用WorksheetFunction.Power
函数来代替直接使用分数指数
您的代码不会降低尝试获取-1的立方根的风险,因为calculation1
的结果可能为零,您将扣除1
因此,您的代码变成:
calc.Offset(0, 3) = WorksheetFunction.Power(((WorksheetFunction.Product(calculation1)) - 1), 3)
我建议您在代码到达正在处理的数据范围的底部时查看发生了什么。如果在循环结束时拾取空单元格,则
工作表函数.Product
函数通常会跳过这些单元格,但值得检查特定例程中发生的情况 你的循环值可能是问题所在吗?与你的开始值和结束值相比,逐步检查代码,直到calc=174,然后查看所有变量值,然后再执行一次。我尝试了,但仍然找不到问题的来源。所有变量都有正确的值,但不会再进一步。不过谢谢你的意见。我想我已经诊断出问题了。我相信当指数不是整数时,Excel VBA很难计算指数。我在专门研究了指数问题后发现了这一点:循环值可能是问题所在吗?与起始值和结束值相比,逐步检查代码,直到calc=174,然后再查看所有变量值,然后再执行一次。我尝试了,但仍然找不到问题的根源。所有变量都有正确的值,但不会再进一步。不过谢谢你的意见。我想我已经诊断出问题了。我相信当指数不是整数时,Excel VBA很难计算指数。我在专门研究指数问题后发现: