如何解决错误 2029 由“VBA Excel 365 Home Insider/Beta”=> 函数“Application.Evaluate”和带双递归的 lambda 表达式斐波那契
名称管理器中存储了以下名为“UDF_FIBO”的UDF函数(Lambda表达式)(表达式根据需要存储为Referer,不带参数)
名称:
UDF_FIBO
推荐人:
=LAMBDA(myVal; IF(myVal>1; IF(myVal>2; UDF_FIBO(myVal-1)+UDF_FIBO(myVal-2);1);1))
在单元格的工作表中测试它,它工作正常。
在 VBA(立即窗口)中,我收到“错误 2029”
错误 2029
错误处理程序没有显示错误 错误编号 0 呃。来源 呃。描述 Err.LastDllError 0
Sub double_recursion()
my = "=LAMBDA(myVal,IF(myVal>1,IF(myVal>2,UDF_FIBO(myVal-1)+UDF_FIBO(myVal-2),1),1))(10)"
Debug.Print Application.Evaluate(my)
End Sub
如果我将字符串更改为简单的递归,则有一个(错误的)结果可用(错误的数学公式,所以它不是解决方案)
Sub simple_recursion()
my = "=LAMBDA(myVal,UDF_FIBO(myVal-1),1))(10)"
Debug.Print Application.Evaluate(my)
End Sub
Testing it with
Debug.Print Application.Evaluate("=UDF_FIBO(10)") is also working fine => Result is correct => 55
克里斯
关于我的系统的内涵:
我必须在 VBA 中使用逗号来分隔变量,而我必须在 Excel 电子表格公式中使用分号,也许您必须根据您的环境更改此符号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。