【问题标题】:Why can't I handle the same error more than once?为什么我不能多次处理相同的错误?
【发布时间】:2022-01-26 02:59:54
【问题描述】:

在下面的这个子例程中,我故意通过除以 0 来导致错误。第一次发生此错误时,它会跳转到名为 'errHandler' 的处理程序,但是第二次发生错误时,执行停止并且 'Division由 0' 引发错误。

如何确保对于每个错误,它确实会跳转到“errHandler”?

(这是我正在编写的 SQL + VBA 程序的核心问题)

Sub errorTest()

Dim i As Long

For i = 0 To 2
    On Error GoTo errHandler
    Debug.Print 8 / 0
continue:
Next i

Exit Sub

errHandler:
Err.Clear
On Error GoTo 0
GoTo continue
    
End Sub

【问题讨论】:

标签: excel vba error-handling


【解决方案1】:

在循环中处理错误

  • Next 表示它将在发生错误的语句(Next i)之后继续执行该语句。
Sub errorTest()

    Dim i As Long
    
    For i = 0 To 2
        On Error GoTo errHandler
        Debug.Print 8 / 0
    Next i
    
    Exit Sub
    
errHandler:
    Debug.Print i, "Run-time error '" & Err.Number & "': " & Err.Description
    Resume Next ' Resets the error, but keeps the routine 'active'.
End Sub

【讨论】:

  • 这太完美了!我之前尝试过的最接近的事情是“恢复”,但不是“继续下一个”。感谢您的帮助!
  • Resume 尝试相同的语句,即在这种情况下,创建一个无限循环(导致 Excel 崩溃)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 1970-01-01
  • 2012-03-02
  • 2020-03-11
相关资源
最近更新 更多