友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第96章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



且会显示相应的信息。如果用户点击了信息框上的重试按钮(值为4),那么VB就执行语句Resume 0, 
该语句就会将VB送到导致错误的语句那里(。SaveCopyAs FileName: = BackupName),然后VB会再 
次执行它。如果用户点击取消按钮的话,VBA就会执行语句Exit Sub,过程结束。  
如果软驱里面的A盘没有问题,那么VBA就会复制活动工作簿到该软盘,并且信息框会通知用户复制 
操作已成功。  
3。  运行几次过程Archive,每次响应不同的选项,确保尽可能多的可能性。使用你在本章学习的 
    多种调试技术。  
技巧13…6 程序测试  
你对你编写的代码负责,这意味着你在发布你的程序给其他人测试之前,你自己先测试它。毕竟, 
你了解它应该如何工作。有些程序员认为测试他们自己的代码是一种降格的事情,特别是当他们在 
一个有专门测试部门的组织中工作的时候。不要犯这种错误。程序员级别的测试过程是非常重要的, 
如同编写代码本身一样。在你自己测试完过程后,你应该给用户们去测试。用户会为你的问题,如: 
程序能产生预期的结果吗?用起来容易并且有趣吗?符合标准习惯吗?再有,将你的整个应用软件 
交给某个懂得一些使用该种应用软件的人,请他使用并试图打破它。  
我们来看看另外一个程序例子,下面显示的过程OpenToRead示范了Resume Next和Error语句的使 
用,以及Err对象。  
     Sub OpenToRead()   
         Dim myFile As String   
         Dim myChar As String   
         Dim myText As String   
         Dim FileExists As Boolean   
         FileExists = True   
         On Error GoTo ErrorHandler   
         myFile = InputBox(〃Enter the name of file you want to open:〃)   
         Open myFile For Input As #1   
          If FileExists Then   
              Do While Not EOF(1)        ' loop until the end of file 遍历文件  
                myChar = Input(1; #1)   ' get one character 获取一个字符  
                myText = myText + myChar     ' store in the variable myText 存储至变量 

                                          264 

… 页面 281…

                myText  
              Loop   
              Debug。Print myText        ' print to the Immediate window 打印到立即窗口  
                                         '  Close  the  file  …menting  out  this  
                                   instruction will cause   
                                           ‘ error 52。 关闭文件 – 注释掉该指令(Close  
                                  #1)会导致错误52  
              Close #1   
         End If   
         Exit Sub   
    ErrorHandler:   
         FileExists = False   
              Select Case Err。Number   
              Case 71   
                     MsgBox 〃The diskette drive is empty。〃   
              Case 53   
                     MsgBox 〃This file can’t be found on the specified drive。〃   
              Case 75   
                     Exit Sub   
              Case Else   
                     MsgBox 〃Error 〃 & Err。Number & 〃 :〃 & Error(Err。Number)   
              Exit Sub   
         End Select   
         Resume Next   
     End Sub   
过程OpenToRead的目的是一字节一字节地读取用户提供的文本文件内容(操作文件在第八章里)。 
当用户输入了一个文件名,各种各样的错误可能发生。例如,文件名可能是错误的,或者用户可能 
试图从软盘上打开文件,而这时软驱里并没有软盘,或者试图打开一个已经打开了的文件。  
要捕捉这些错误,过程OpenToRead结尾处的错误处理程序使用了Err对象的Number (原文为Name) 
属性。Err对象包含有关运行时间错误的信息。如果程序运行时错误发生了,Err。Number语句就会 
返回错误编号。  
如果错误71,53或者75发生了,VB就会显示写在Select…Case代码块里的友好信息并且进行到语句 
Resume Next,它会将VB发送到导致错误的代码行下面的一行。如果是其它(意想不到)的错误发 
生了,那么VB就会返回错误编号(Err。Number)和错误描述(Error(Err。Number))  
在过程的开始处,变量FileExists被设置为真,这样,如果该程序没遇到错误的话,所有在If  
FileExists Then代码块里的指令就会被执行。然而,如果VBA遇到了错误,那么变量FileExists 
的值就会被设置为假(参见标签ErrorHandler下面的错误处理程序的第一行语句)。这样,VB在试 
图读取文件时就不会产生错误,导致打开错误。如果你注释掉语句Close #1的话,那么VB在下次试 
图打开同一文件时,就会遭遇错误。  
注意ErrorHandler之前的语句Exit Sub。将Exit Sub语句放在错误处理程序的上面,你不会希望如 
果没有错误发生的时候还执行该错误处理程序。  
我们来进行下述练习,测试过程OpenToRead并更好理解错误捕捉:  
1。  用记事本准备一个名叫C:Vacation。txt文本文件,输入任何文本  
2。  逐语句执行过程OpenToRead四次,每次提供下述之一的信息:  
    *  C:Vacation。txt文件名称  
    *  不存在C:盘上的文件名  
    *  A:盘上的任意文件,但是软驱是空的  
    *  注释掉语句Close #1,并且输入文件名C:Vacation。txt  
技巧13…7 错误:制造错误一测试错误处理程序  
你可以故意制造一些错误来测试你程序里的错误陷阱:  

                                         265 

… 页面 282…

…   通过使用下述语法设置内置错误:Error error_number。例如,要显示当除数为0时发生的错误 
    的话,可以在立即窗口里输入:  
    Error 11  
    当你按下回车键后,VB就会显示错误信息:  
    运行时间错误”11”  
    除数为零  
…   要检查产生错误的意义的话,可以使用语法: Error(error_number)。例如,想要知道编号为7 
    的错误是什么意思,可以在立即窗口里输入下述指令:  
    ?Error(7)  
    当你回车后,VB会返回该错误描述:  
    内存溢出  

17。接下来……  

在本章,你学习了如何测试你的VBA过程,以确保他们按计划进行。你使用断点和监视逐步程序来 
调试它。你学习了如何在中断模式下使用立即窗口。你知道了本地窗口如何能帮你检测变量值,以 
及调用堆栈对话框如何能在你复杂的程序里帮你追踪你在哪里。你已经学习了在编译时确定哪些需 
要包括哪些需要排除。最后,你也学习了如何使用错误处理程序捕捉错误。通过使用内置的调试工 
具,你可以快速指出程序的问题所在。请试着多花一些时间来熟悉这些工具,掌握了调试艺术,可 
以节省你许多时间并避免错误。  
通过完成一到十三章,你已经获得了扎扎实实的VBA工作知识,很可能,你应该开始自己的Excel 
自动化工程了。本章结束了你使用Excel 2002 VBA的中级级别,VBA提供了许多更高级的功能,这 
些在本书的剩余章节将挖掘出来。  

                         第十四章 微软 Excel 2002 中的事件编程  

     你如何使当用户点击工作表单元格时出现的内置快捷菜单失活?你如何在工作簿打开或者 
 关闭之前显示一个自定义信息?你如 何验证输入在单元格或者单元格区域里的数据?要想对 
 Excel获得彻底控制的话,你必须学习如何响应事件。学习如何进行事件 编程将让你贯彻你自己 
 的功能性到Excel应用软件里去。你需要学习有关该主题的第一件事情就是,什么是事件。这里 
 有个简单 的定义:  
 事件是发生的东西 无需说,对象发生的事件是Excel的一部分,然而,一旦你学习了Excel中的事 
 件知识,你将发现更容易去理解发生在Word或者 其它任何微软办公软件的对象事件。事件是由对 
 象认可的行动。 既然你知道了什么是事件,那么你需要知道事件是可以被一个应用软件用户(例 
 如你自己),另一个程序或者系统本身引发的。 因此,你如何能够引发事件呢?假设你右键单击 
 一个工作表单元格,该具体操作将显示一个内置的工作表单元格快捷菜单,允许 你快速的访问和 
 工作表单元格相关的频繁使用的命令。但是,万一在某种情况下该内置响应不对呢?你可能想要完 
 全不接受工作 表的右键单击,或者当用户右键单击任何单元格时,单元格快捷菜单上出现一个自 
 定义菜单。有个好消息,就是你可以使用VBA 来编写代码对事件进行反应。  
 Excel提供了许多事件供你响应,下述对象可以响应事件:  
 *   工作表  
 *   图表  
 *   透视表  
 *   工作簿  
 *   应用软件 通过编写时 
 间过程,你可以决定当事件 
 发生时发生什么。  

1。事件过程介绍  

  事件过程,作为一种特殊的VBA过程,用来对特定的事件作出反应。该过程包含处理具体事件的 
 VBA代码。有些事件只需要简单 的一行代码,然而,其它的可能更复
返回目录 上一页 下一页 回到顶部 1 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!