Hug*_*len 6 debugging excel vba runtime-error excel-2003 excel-vba
似乎从单元格公式(即"用户定义函数"或UDF)调用VBA代码时,通常的VBA Break On Error不起作用.
我能找到这种行为的唯一地方是在一篇名为"为Excel 2007和Excel Services开发用户定义的函数"的文章中的几行:
错误处理返回#VALUE错误.UDF代码抛出的所有异常都将作为#VALUE错误返回到Excel工作表中.
即使您将错误陷阱设置为"中断所有错误"并单步执行代码**,您也永远不会看到VBA运行时错误对话框 - Excel只是静静地放弃执行而不告诉您出了什么问题.当然,这使得调试比实际需要更加困难.
有一些潜在的解决方法涉及On Error但我宁愿不弄乱我的代码只是为了找出错误被引发的位置.
是否有一些我忽略的Excel/VBA选项会使Break On Error正常工作?我正在使用Excel 2003.
**从单元格调用时进入调试器的唯一方法是设置断点或使用Stop语句
我知道当你特别要求除 之外的东西时听到这个并没有什么意思On Error,但恐怕这是我所知的唯一选择。
您可以在调试时使用On Error Goto ErrorHandler(并将其注释掉以On Error Goto 0在其他时间获得默认值)。可能ErrorHandler只有几行,因此不会使您的代码变得过于混乱:
ErrorHandler:
MsgBox Err.Number & vbCrLf & Err.Source & vbCrLf & Err.Description
Resume
Run Code Online (Sandbox Code Playgroud)
始终使用断点来Resume引导您在单步执行时返回到导致错误的语句,并避免无限的错误处理循环。