首页 / 软件开发 / VB / VBA中的错误处理
VBA中的错误处理2010-01-29 博客园 Jaxu从理论上讲,VBA没有提供任何的错误处理机制,这种被用在微软Office产品中的以Visual Basic语言为基础的脚本语言根本就不要任何的错误处理,当程序出现错误或产生异常情况时,VBA会自动定位到出错的代码行,然后提示用户出错的可能原因。这是典型的脚本语言的错误提示,联想到javascript语言,在浏览器中如果出现脚本错误,浏览器会给出提示信息,但这并不影响整个程序的正常运行,最多也就是出现错误之后的脚本不被继续解释而已。不过即便如此,javascript还是提供了较为良好的错误处理机制,例如常见的try catch语句和alert提示,以及后来支持的debugger调试信息等,javascript在支持面向对象语言特性的同时也逐渐改善了它的错误处理和调试方法。然而Visual Basci却没有这么幸运,从诞生之初,Visual Basic就没有提供一个比较好的错误处理机制,尽管我们在实际应用中总会遇到这样或那样的运行时错误(例如错误删除文件、磁盘驱动器空间不够、网络通信发生异常等),但是对于Visual Basic的过程来说根本就没有错误处理,当错误产生时程序便停止运行,直到异常被清除。有关比较详细的介绍Visual Basic的错误处理和调试方法的文章,读者可以参考下面这个链接。http://www.officexy.com/Articles/office/VBABasic/20061026103436501.htmVBA的语言特性类似于Visual Basic,应该说它们属于同一家族,所以,用来在Visual Basic中处理程序异常的方法也同样可以被用在VBA中。在Visual Basic中,常用的程序错误处理的方式是设置或使用错误陷阱,以告诉应用程序当错误发生时转移到何处(或处理当错误发生时要运行的代码),通过在代码中定义标签来告知应用程序当错误发生时要转到的地方。这一点和C系列语言的错误处理方式是相同的。基本步骤如下:1.设置一个有效的错误陷阱,以告诉应用程序发生错误时转移到何处继续运行。Visual Basic中的On Error语句可以使错误陷阱有效,并为应用程序指定错误处理的入口。2.在错误程序的入口处编写响应错误的具体实现,如继续尝试执行之前的代码、或告知用户出错的具体原因以让用户尝试去解决等。3.退出错误处理。有关如何使用Visual Basic的错误处理和On Error语句的具体含义,读者可以仔细阅读上面给出的那个链接的文章,里面有非常详细的介绍。我在这里会结合实际应用来讲讲在VBA中如何具体使用错误处理。先看一个简单的示例。Private Sub CommandButton1_Click()
On Error GoTo Err_Handle
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = 10
b = 0
c = a / b "除数为0会导致运行时错误
MsgBox c
End Sub
Err_Handle:
MsgBox Err.Description
End Sub
在上述过程中,我们首先通过On Error语句设置了一个错误陷阱,该错误陷阱将自动被激活,同时错误陷阱指向了代码中定义的标签Error_Handle。当过程被调用时,如果出现异常,程序会自动运行标签所指向的代码段,这里会给用户一个提示。Err对象为系统对象,其中包含了当错误发生时的描述信息和错误编号,根据Err对象提供的这些简单信息我们也许可以告知用户应用程序发生了什么事情,从而最终找出出错的具体原因。