当我使用“Professional Excel Development”一书中的错误处理方法时,如何进行调试?

时间:2014-09-15 17:41:16

标签: excel vba excel-vba error-handling

我已经实施了#34; Professional Excel Development"的错误处理方法。 Rob Bovey和Stephen Bullen在我的Excel VBA项目中。

我想知道如何在DEBUG模式下运行,以便我可以找到错误的确切位置,因为输出错误日志只显示错误发生的函数,而不是行。

P.S。我在下面回答了我自己的问题,因为我在运行代码的过程中发现了它。请查看完整方法的优秀书籍。

1 个答案:

答案 0 :(得分:0)

- 如何在调试模式中运行 -

- 此代码基于Rob Bovey和Stephen Bullen撰写的“Professional Excel Development”一书中的方法,但该书并未详细介绍如何进行调试。

- 这个答案没有显示所有错误处理代码,只显示了如何在调试模式下使用本书中实现的内容。

- 您的错误堆栈将出现在与程序相同的目录中名为Error.log的日志文件中。滚动到底部以查找发生错误的函数的名称(运行时列出的第一个函数。)这可能会让您足够接近以找到错误。

- 要使用此错误处理系统查找错误的确切位置,您必须以调试模式运行。

  1. 转到模块M_ErrorHandler,其中包含本书中的错误处理功能。您可能以不同方式命名模块。
  2. 更改

    Public Const gbDEBUG_MODE As Boolean = False 
    

    Public Const gbDEBUG_MODE As Boolean = True
    
    1. 运行程序。

    2. 发生错误时,执行将在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
      

      结束职能

    3. 在调试器中,使用F8逐步执行代码。接下来将执行“恢复”行。您跳转到的下一行将是导致错误的确切行。请注意错误的位置并确定如何解决错误。

    4. 按F5键运行坏行并再次引发错误,这将使您再次停止。

    5. 不幸的是,你不能只关闭Debug并从这一点继续。您现在有两个选择:a)在任何状态下退出程序(停止执行)或b)小心完成以保护您的数据和工作表。

    6. 要继续完全错误清除并防止工作表中出现问题,必须从堆栈中每个函数的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。重复,直到到达程序的顶部。

      1. 修复错误。

      2. 将DEBUG模式设置为false并保存。

        Public Const gbDEBUG_MODE As Boolean = False