VBA代码编辑器(VBE)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.3 VBA代码编辑器(VBE)
Visual Basic编辑器(VBE)是一个集成的开发环境,是我们查看、编辑、调试VBA程序的重要工具,熟悉和掌握VBE对于提高代码编写的速度,以及调试程序、迅速排除错误有着很重要的帮助。
打开Access数据库,选择菜单【工具】∣【宏】∣【Visual Basic 编辑器】,便进入VBE。
1.3.1 VBE窗口的分类及功能
编辑器中有很多窗口,它们可以以窗格的形式显示。用户可根据自己的习惯用鼠标拖动它们停靠在窗口任意位置,或者选择性的显示一些窗格,如图8-6与8-7所示。
图1-6 VBE窗口1
图1-7 VBE窗口2
代码窗口:代码窗口用来编写、显示以及编辑Visual Basic代码。过程与过程之间会
显示一条灰色横线以分割。
“过程查看”图标,显示所选的过程,同一时间只能在代码窗口中显示一个过程。“全模块查看”图标,显示模块中全部的代码。
立即窗口:立即窗口键入或粘贴一行代码,然后按下ENTER 键来执行该代码,立即窗口中的任何代码或者结果都不能够被存储。可以用鼠标把选定的代码在立即窗口与代码窗口之间相互拖放。程序中的“Debug.Print”语句也会将结果输出到立即窗口。
注意在立即窗口显示的信息容量是有限的,当使用大量Debug.Print语句时,可能看不到位于开头位置语句的打印结果。如果内容比较多,可以考虑将输入信息保存到一个指定的数据表中,以便事后进行观察和分析。
在中断模式下,立即窗口中的语句,是根据显示在过程框的内容或范围来执行的。我们往往用此来监视代码的执行情况。
本地窗口:本地窗口打开时,可自动显示出当前模块级别及在当前过程中的所有变量的声明及其当前值。
监视窗口:当工程中有定义监视表达式定义时,就会自动出现,窗口中列出了监视表达式及其值、类型与上下文。
1.3.2 对象浏览器
按下快捷键F2,可打开对象浏览器,显示出对象库以及这些对象库可供使用的对象、属性、方法、函数及常数。可以用它来搜索及使用内置的对象,或是来源于其他引用应用程序的对象,如图8-8所示。
图1-8 对象浏览器
不过,在立即窗口或者代码窗口中键入代码时,编辑器也会自动地显示出对象的属性、方法、常数。例如,在代码窗口中键入“Docmd.”,当这个小圆点打出的时候,会在光标的位置显示出一个小列表窗口,这里包含了这个对象的所有集合、方法、属性与常数,并可自动完成,如图8-9所示。
图1-9 自动显示对象的属性、方法、常数
1.3.3 跟踪与调试
在编写程序的过程中,我们往往尽量保证程序能够正确的执行,不出现任何错误。但遗憾的是,没有人能完全做到。需要验证程序的正确性,特别是找出程序最难发觉的逻辑错误并给予纠正。
除了直接检查程序执行结果这种简单的检测手段,往往还需要详细地了解程序在执行过程中的变量的变化情况;程序流程是否符合事实逻辑或者设计初衷。所以对程序进行进一步的分析是十分必要的。
VBE编辑器为我们提供了比较方便的程序调试方法。一般来说,调试VBA程序可以使用这几种方法在程序执行的某个过程中暂时挂起程序,并保持其运行环境,以供检查。检查的方法包括:逐语句执行、设置断点、设置监视、插入Stop语句、使用Debug对象等,下面对它们一一进行介绍。
(1)逐语句执行
将光标定位在需要调试的过程中,单击【调试】菜单的【逐语句】命令,或者按F8键运行。这样,程序每执行一条语句(变量声明语句一次性执行完成除外)便暂停下来。此时,用户可进行各种编辑操作。如想接着向下执行一条语句只需按F8即可。
这样我们可以利用本地窗口,详细地观察每执行一步变量的变化情况,也可以看到程序分支的选择情况。这种方法在调试程序的时候会经常用到。
逐语句执行的任何时候,可按F5或者单击【运行】菜单的【运行子过程/用户窗体】命令一次性执行完余下的程序段。也可单击【运行】菜单的【重新设置】命令终止正在执行的过程。
(2)设置断点
单击需要调试的语句左边的边界标识条,即代码窗左边灰色边缘,该行代码以暗红色的背景显示,并在边界表示条显示出一个圆点,则设置该语句为一个断点;一段程序可设置多处断点。
运行程序,当执行到该语句时,程序被暂停下来,以黄色的背景显示当前语句行。
此时,我们可以通过本地窗口查看当前的变量值;或者在立即窗口中查看对象的属性、表达式的值;还可以编辑程序代码,也可以按下F5继续执行或者按F8单步执行,或者单击工具栏【重新设置】按钮直接退出被调试的程序。
断点是临时性的标志,不会随VBA程序一起保存到数据库中。
(3)设置监视
通过本地窗口,只能看到在程序运行时,该过程和模块中声明的变量类型以及其当前值,
我们可以监视更为灵活的表达式。在代码窗,右击鼠标,在弹出的快捷菜单中选择【添加监视】菜单项,出现如图8-10所示的对话框。
图1-10 添加监视
监视表达式是在监视窗格用类似本地窗口方式显示表达式的类型和结果。
选择不同的监视类型,可以监视表达式的变化情况,也可以在监视表达式满足特定条件的时候,让正在执行的程序挂起,以作进一步的分析。
同样,监视不会保存在程序中,当关闭数据库时,监视表达式的设定全部丢失。
(4)Debug对象
Debug对象是专门用在程序调试阶段,实现特定调试功能,它作为程序的一部分可以保存在数据库中。Debug语句非常特殊,在Access应用程序编译成MDE/ADE时,Access编译器将忽略所有Debug对象的语句,而不编译到目标文件中。
Debug对象只有两个方法,没有任何属性和集合。其中Print方法我们在之前的程序中已经多次见过,Print方法实现了向立即窗口输出信息的功能。
Debug对象的Assert方法,可以实现当不满足给定条件时,挂起正在执行的程序。与断点不同的是,Assert方法是有条件的挂起,而程序执行在所有断点处都会挂起,使用Debug 对象的语句会保存在程序中,而断点则不能。例如:
Debug.Assert False
当执行这条语句时总是会挂起程序,因为表达式“False”恒为假。当然实际应用中一般并不会用这样没有意义的恒假表达式,而是使用能反映一定监视目的的表达式。
(5)Stop语句
Stop语句也实现了挂起程序的功能。但它与Debug.Assert不同的是,Stop语句是无条件挂起,程序即使编译以后,仍保留在程序中。
当程序调试以后忘记删除Stop语句,可能引起错误的结果,因为程序在这里不再自动继续执行。Stop语句用得较少。
1.3.4 自定义VBE环境
(1)自定义字体格式
默认情况下,代码编辑区以及立即窗口中的文字显示为9号宋体字。单击【工具】∣【选项】,在【选项】对话框的【编辑器格式】选项卡中,可以改变显示的字体、大小、颜色和样式,如图8-11所示。