·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
您现在的位置:天新网 > 软件开发 > 开发语言 > VB开发
VBA中的错误处理
http://www.21tx.com 2012年11月02日

1 2 下一页

  从理论上讲,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.htm

   VBA的语言特性类似于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对象提供的这些简单信息我们也许可以告知用户应用程序发生了什么事情,从而最终找出出错的具体原因。

   在Visual Basic中,我们通过On Error语句设置并激活了一个错误陷阱,直到程序退出过程或方法,该错误陷阱会一直有效。也就是说,我们需要给每一个过程或方法在需要的时候设置单独的错误陷阱,这个有点类似于C的代码中在需要的地方插入try catch语句,错误处理程序在过程或方法内部定义的标签开始的地方,在程序运行时如果错误没有出现,则标签之后的代码应该不会被执行到,因此我们通常都需要在错误处理代码前插入退出语句,例如End Sub或方法的返回语句。

   幸运的是我们通常没有必要为每一个过程或方法定义错误陷阱,在VBA中,往往只有一少部分过程或方法需要定义错误陷阱,但是不排除复杂的VBA应用程序,当代码量达到上千行,过程或方法上百个时,应该不亚于一个小的VB系统,这个时候编写一个专门的错误处理函数还是很有必要的。在需要进行错误处理的过程或方法中设置好错误陷阱和用于处理错误的标签,然后在标签后调用错误处理函数并传入Err对象,由错误处理函数专门处理程序中各种不同的错误。这个程序看起来大致是下面这个样子。

上一篇: 利用VB破解word文档密码的思路和源代码
下一篇: 利用VB 6.0实现网络远程PC与单片机通信

1 2 下一页

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net