错误 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 (将#修改为@)