谢谢特洛伊,我';我确信它工作得很好,一旦我理解了代码I';我肯定我';我会更加感激的
- On Error Goto ErrorHandler
这一行是关键。它告诉编译器发生错误时要做什么。在这种情况下,它告诉编译器转到标签“quot;ErrorHandler“;i、 e.程序在紧跟标签的行上继续执行。它类似于声明;错误时继续下一步“;这告诉编译器,如果发生错误,请跳到错误发生后的下一行
请记住,在正常情况下不应使用标签,因为它可能导致代码难以维护。然而,我发现它们对于处理错误非常有用,因为我可以将所有错误处理代码分组在一个位置,而不是将其散落在例程的其余部分
下一位代码是错误处理程序的核心。它由两部分组成,该部分允许程序自行清理(关闭数据库连接、处理对象等)
- ExitHere:
- 'clean up any references...
- set oPoint = nothing
-
-
- exit function
在;ExitHere“;您将放置要运行的代码,以确保例程正确退出。在正常过程中,您的程序将自然流入;ExitHere“;节和结束优雅。在某些情况下,您可能需要提前终止应用程序,但仍然需要确保所有内容都已清理干净
所以不要用这样的东西:
- if oPoint is nothing then exit function
你可以用这样的东西:
- if oPoint is nothing then goto ExitHere
当发生错误时,调用例程的最后一部分:
- ErrorHandler:
- select case Err.number
- case -22222 '<-This would be where the error that is thrown from the .Find method
- resume next 'resume on the line following where the error was thrown
- case else
- msgbox "Something just happened... " & err.number
- end select
-
- resume ExitHere
- end function
当出现错误时,该;On Error Goto ErrorHandler;然后,程序继续在紧跟“0”之后的行上执行;ErrorHandler“;标签在本例中,选择语句。您感兴趣的是捕获find方法生成的错误。这就是为什么我有;案例-2222“;我不知道';我不知道抛出了什么错误号。您将输入生成的错误号,而不是-2222。下一行“;继续下一步“;告诉程序在通过错误的行之后立即跳回该行
这有意义吗?如果你需要更好的解释,请告诉我和我';我看看今晚能做些什么
|