对于一个真正的软件工程而言,程序员最多的时间并不是用在编码上,而是调试上,一段代码刚写完的时候,通常是貌似完美,实际上能不能运行,其中包含着多少错误,即便是最优秀的程序员也无法预知。于是我们需要通过调试来找出我们代码中的错误,并且将其一一修复,使我们的代码最终能够实现我们预期的功能。
VBA代码也是如此,值得庆幸的是微软为我们提供了完善的调试环境,也就是我们经常用的VBAIDE(VBA集成开发环境),有很多Access新手在开始学习编写VBA代码的时候,往往一门心思学习各种语法、函数等等,却忽略了学习VBAIDE的使用方法,这样做的结果是你常常会面对一个貌似完美但是实际上无法运行的程序束手无策。
本文将完整介绍VBA代码的调试方法,虽然本文不是VBAIDE的完整教程和文档,但是通过对于本文的学习和实践,你可以学会自己来寻找代码中的错误。
本文中选用了“Office中国论坛”中网友antywjl的求助问题作为例子,来进行我们的第一次调试练习。例子附件如下:
对于一个调试系统而言,我们将会经常接触到以下概念:
1、编译
编译是调试中最基本的功能,所谓编译就是把我们能够看懂的编程语言代码,转化成机器能够看懂的代码,不同系统的编译功能是不同的,VBA编译系统生成的是一种中间代码——PCode,至于他是什么,我们不需要深究,但是我们需要理解一点,就是只有所有语法全部正确的代码,才能够通过编译,因此这一功能有助于我们检查我们的代码的语法是否正确,包括变量是否作了应有的声明等等。
通常我们的语法中有显而易见的错误时,VBAIDE会用红色字体来显示有问题的代码行,但是调试不仅仅限于这些代码行,而是整个程序的检查,红色字体仅能识别一行内就能确定的错误,调试则能够识别全代码范围的错误,例如变量类型声明不符等等。
在我们的例子中,我们打开企业资料窗体代码,可以看到如下图位置,有一行红色的代码,说明了这行代码存在语法问题。
问题在于代码中缺少应有的空格,在&前后添加空格后问题解决。现在代码中已经没有红色代码了,那么让我们来尝试一下编译,选择『调试』菜单中的『编译系统』选项,我们得到了如下图的结果:
出错信息显示:变量声明类型不符,并且自动选中了出错的代码“Stemp&”,很明显,这也是缺少空格造成的,但是由于&作为变量名后缀,也是一种合法的语法,因此单行无法识别这个错误,但是全代码编译时,问题就暴露出来了。于是我们添加上空格,并且去掉后面两个不必要的“\”。
再次编译,我们又遇到了下图中的错误,仔细一看,代码中标签声明处Exit后有两个下划线,而调用处只有一个,
明显的打字错误。修正后再次编译,通过。
编译,并不能找到我们代码中的所有错误,因为计算机还没有聪明到能够理解我们人类到底想干什么,但是编译依然是调试最重要的一步,因为他至少能让你修正语法,使得你的程序可以被执行,只有能够被执行,才能继续我们后面的调试。
(未完待续,在后面的内容中,我们将继续讲解断点、单步、和监视的使用方法)
[此贴子已经被作者于2006-5-18 14:05:29编辑过]
|