当我在VBA中遇到错误时,如何设置变量的值?

当我在VBA中遇到错误时,如何设置变量的值?,vba,runtime-error,Vba,Runtime Error,我正在建立一个函数,计算一系列大约1000个不同电力项目的年收入的内部收益率。这些项目的年现金流从8000美元到1000000美元不等。VBA中的IRR函数需要两个参数:一个现金流数组(第一个必须是负的——在这种情况下基本上是资本支出,然后是正的年收入)和函数用于开始迭代计算IRR的初始猜测。我的函数工作得很好,除非VBA IRR函数在到达IRR时超过了内置的20次迭代的限制。因此,如果您将高现金流项目的猜测设置得太低,则IRR将耗尽迭代次数并返回运行时错误5。或者,如果您将初始猜测设置得太高,

我正在建立一个函数,计算一系列大约1000个不同电力项目的年收入的内部收益率。这些项目的年现金流从8000美元到1000000美元不等。VBA中的IRR函数需要两个参数:一个现金流数组(第一个必须是负的——在这种情况下基本上是资本支出,然后是正的年收入)和函数用于开始迭代计算IRR的初始猜测。我的函数工作得很好,除非VBA IRR函数在到达IRR时超过了内置的20次迭代的限制。因此,如果您将高现金流项目的猜测设置得太低,则IRR将耗尽迭代次数并返回运行时错误5。或者,如果您将初始猜测设置得太高,则低现金流项目的迭代次数将用完

当我遇到超过20次迭代的错误时(运行时错误5),我希望将IRR设置为某个值。我尝试过类似的方法,但不起作用:

If IsError(IRR(Values(), Guess)) Then
   NodeIRR = -100
Else
   NodeIRR = IRR(Values(), Guess)
End If
有什么想法吗