gpt4 book ai didi

debugging - Excel:错误中断在用户定义函数中不起作用

转载 作者:行者123 更新时间:2023-12-02 06:24:48 24 4
gpt4 key购买 nike

似乎当从单元格公式(即“用户定义函数”或 UDF)调用 VBA 代码时,通常的 VBA Break On Error 不起作用。

我唯一能找到此行为记录的地方是一篇名为 "Developing User-Defined Functions for Excel 2007 and Excel Services" 的文章中的几行内容。 :

Error handling returns #VALUE errors. All exceptions thrown by the UDF code are returned into the Excel worksheet as #VALUE errors.

即使您将错误捕获设置为“出现所有错误时中断”并单步执行代码**,您也永远不会看到 VBA 运行时错误对话框 - Excel 只是悄悄地放弃执行,而不告诉您出了什么问题。当然,这使得调试变得比实际需要的更加困难。

有一些涉及On Error的潜在解决方法,但我不想为了找出引发错误的位置而弄乱我的代码。

是否有一些我忽略的 Excel/VBA 选项可以使“错误中断”正常工作?我使用的是 Excel 2003。

** 从单元调用时进入调试器的唯一方法是设置断点或使用 Stop 语句

最佳答案

最好的方法是使用 On Error GoTo ErrorHandler 以及 Stop 引用,然后是 Resume

需要小心,不要进入 resume 的无限循环,因为 UDF 几乎持续运行(如果发生这种情况,请重复按 Esc)

因此,在您的代码中添加: On Error GoTo ErrorHandler 靠近函数的开头,然后在 End Function 之前的末尾添加:

Exit Function
ErrorHandler:
MsgBox Err.Number & vbCrLf & Err.Source & vbCrLf & Err.Description
Stop
Resume

退出函数会停止此代码在正常操作中的运行。如果遇到错误,将弹出包含详细信息的消息框,代码将中断(由于 Stop),您可以单步返回代码(通过 resume 跳回) code> 语句)使用调试工具栏上的下一行命令。

当然,当您对 UDF 感到满意时,请不要忘记注释掉 On Error GoTo ErrorHandler 行。

关于debugging - Excel:错误中断在用户定义函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6620084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com