Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 计算成功后出现运行时错误5_Vba_Excel_Runtime Error - Fatal编程技术网

Vba 计算成功后出现运行时错误5

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

我正在开发一个基于月度回报数据自动计算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次迭代,然后我得到了错误。我已经手动复制了计算结果,没有错误,所以我认为这不是数据问题。这可能是内存问题吗?

检查一下-基本上说,您可以使用
工作表函数.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很难计算指数。我在专门研究指数问题后发现: