我已经实施了#34; Professional Excel Development"的错误处理方法。 Rob Bovey和Stephen Bullen在我的Excel VBA项目中。
我想知道如何在DEBUG模式下运行,以便我可以找到错误的确切位置,因为输出错误日志只显示错误发生的函数,而不是行。
P.S。我在下面回答了我自己的问题,因为我在运行代码的过程中发现了它。请查看完整方法的优秀书籍。
答案 0 :(得分:0)
- 如何在调试模式中运行 -
- 此代码基于Rob Bovey和Stephen Bullen撰写的“Professional Excel Development”一书中的方法,但该书并未详细介绍如何进行调试。
- 这个答案没有显示所有错误处理代码,只显示了如何在调试模式下使用本书中实现的内容。
- 您的错误堆栈将出现在与程序相同的目录中名为Error.log的日志文件中。滚动到底部以查找发生错误的函数的名称(运行时列出的第一个函数。)这可能会让您足够接近以找到错误。
- 要使用此错误处理系统查找错误的确切位置,您必须以调试模式运行。
更改
Public Const gbDEBUG_MODE As Boolean = False
到
Public Const gbDEBUG_MODE As Boolean = True
运行程序。
发生错误时,执行将在ErrorHandler下的Stop行中的该函数中停止。
<强> ErrorExit:强>
On Error Resume Next
-- Include cleanup code here
bBoldLateArrivals = bReturn
Exit Function
<强>的ErrorHandler:强>
bReturn = False
If bCentralErrorHandler(msMODULE, sSOURCE) Then
Stop -- *** STOPS HERE ***
Resume
Else
Resume ErrorExit
End If
结束职能
在调试器中,使用F8逐步执行代码。接下来将执行“恢复”行。您跳转到的下一行将是导致错误的确切行。请注意错误的位置并确定如何解决错误。
按F5键运行坏行并再次引发错误,这将使您再次停止。
不幸的是,你不能只关闭Debug并从这一点继续。您现在有两个选择:a)在任何状态下退出程序(停止执行)或b)小心完成以保护您的数据和工作表。
要继续完全错误清除并防止工作表中出现问题,必须从堆栈中每个函数的ErrorExit标签继续执行。要执行此操作,请向上滚动几行并单击“On Error Resume Next”行以放置光标。在调试菜单中,选择“Debug ... Set Next Statement”或使用Ctrl-F9。
ErrorExit:
On Error Resume Next -- *** PUT CURSOR ON THIS LINE **
-- All the good cleanup lines you have here will run
按F5继续运行。您将在堆栈中的下一个功能中停止在停止线上。再次单击该功能中的“On Error Resume Next”,然后再次使用Ctrl-F9和F5。重复,直到到达程序的顶部。
修复错误。
将DEBUG模式设置为false并保存。
Public Const gbDEBUG_MODE As Boolean = False