VBA错误处理
有三种类型的编程错误:(1)语法错误和(b)运行时错误(三)逻辑错误。
语法错误
语法错误,也被称为解析错误,发生在VBScript解释的时候。例如,下面的一行将导致一个语法错误,因为它缺少一个右括号:
Function ErrorHanlding_Demo() dim x,y x = "Codeinn" y = Ucase(x End Function
运行时错误
在执行过程中运行时错误,也被称为异常,发生解释后。
例如,下面的行导致运行时错误,因为这里的语法是正确的,但在运行时,它试图调用乘法,这是一个不存在的功能:
Function ErrorHanlding_Demo1() Dim x,y x = 10 y = 20 z = fnadd(x,y) a = fnmultiply(x,y) End Function Function fnadd(x,y) fnadd = x+y End Function
逻辑错误
逻辑错误可能是最困难的类型的错误跟踪。这些错误不是一个语法或运行时错误的结果。相反,当犯了脚本逻辑的一个错误发生,没有得到所期望的结果。
无法抓到这些错误,因为这取决于你想要把什么样的程序执行在逻辑业务需求中。
例如,一个数字除以零或进入无限循环,写在脚本中。
Err对象
假设,如果有一个运行时错误,则执行停止通过显示错误信息。作为开发人员,如果想捕捉错误,那么可以使用Error对象。
示例
在下面的例子中,Err.Number 给出了错误号和 Err.Description 给出错误描述。
Err.Raise 6 ' Raise an overflow error. MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description Err.Clear ' Clear the error.
错误处理
VBA有一个错误处理例程,也可以用于禁用一个错误处理例程。如果没有On Error语句,发生的任何运行时错误是致命的:将显示一条错误消息,并且执行突然停止。
On Error { GoTo [ line | 0 | -1 ] | Resume Next }
关键字 | 描述 |
---|---|
GoTo line | 可允许在需要的行参数指定的行开始的错误处理例程。指定的行必须在相同的过程中On Error语句,否则将发生编译时错误。 |
GoTo 0 | 禁用启用的错误处理当前过程中,并重置为Nothing。 |
GoTo -1 | 在当前过程中禁用启用例外,它重置为Nothing。 |
Resume Next | 指定在运行时发生错误时,控制转到该语句立即出现错误的语句之后,并继续从该点执行 |
示例
Public Sub OnErrorDemo() On Error GoTo ErrorHandler ' Enable error-handling routine. Dim x, y, z As Integer x = 50 y = 0 z = x / y ' Divide by ZERO Error Raises ErrorHandler: ' Error-handling routine. Select Case Err.Number ' Evaluate error number. Case 10 ' Divide by zero error MsgBox ("You attempted to divide by zero!") Case Else MsgBox "UNKNOWN ERROR - Error# " & Err.Number & " : " & Err.Description End Select Resume Next End Sub
本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:VBA错误处理
本文地址:http://www.codeinn.net/vba/1444.html
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程
转载请注明:文章转载自:代码驿站 [http:/www.codeinn.net]
本文标题:VBA错误处理
本文地址:http://www.codeinn.net/vba/1444.html