如何使用VisualBasic编辑器#2008-11-2115:40:16作者:admin上面已经讲到,Word在VBA编程语言中把宏录制为一系列的Word命令,然后在VisualBasic编辑器中打开已录制的宏,修改其中的指令。也可用VisualBasic编辑器创建包括VisualBasic指令的非常灵活和强有力的宏,而那些指令是无法采用录制的方法的。在Word中打开VisualBasic编辑器的方法是:指向【工具】菜单中的【宏】菜单项,然后从其级联菜单中单击【VisualBasic编辑器】命令,即可打开如图11-2所示的VisualBasic编辑器。注意:如果用此命令打不开VisualBasic编辑器,说明文档和Normal模板可能已经被宏病毒感染了,因为一般的宏病毒都会把【VisualBasic编辑器】命令屏蔽。此时可以把当前用户的Normal模板删除,用没有被感染的Normal代替或者不要Normal模板,然后再重新打开Word,就可以打开VisualBasic编辑器。下面简单介绍一下VisualBasic编辑器的方法。11.2.1利用好窗口VisualBasic编辑器中根据不同的对象,设置了不同的窗口。如果能恰当地使用这些窗口,可以使编程效率有极大的提高。VisualBasic编辑器中主要的窗口包括代码窗口、立即窗口、本地窗口、对象浏览器、工程资源管理器、属性窗口、监视窗口以及工具箱和用户窗体窗口等。11.2.1.1【代码】窗口可以使用【代码】窗口来编写、显示以及编辑VisualBasic【代码】。打开各模块的代码窗口后,可以查看不同窗体或模块中的代码,并且在它们之间做复制以及粘贴的动作。如图11-3所示。可以按照下列所述的方式,来打开【代码】窗口:在工程窗口中,可以选择一个窗体或模块,然后选择【查看代码】按钮。在【用户窗体】窗口中,可以双击控件或窗体;也可以从【视图】菜单中选择【代码窗口】,或者按下F7键。在【代码】窗口中可以将所选文本拖动到当前代码窗口中的不同位置,也可以拖动到其他的【代码】窗口或者立即窗口以及监视窗口,甚至【回收站】中。在【代码】窗口中,左上角的下拉列表框为【对象】框,用来显示所选对象的名称。用户可以按下列表框中的右边箭头,来显示此窗体中的对象。【对象】框右边的下拉列表框为【过程/事件】框,它列出了【窗体】或【对象】框所含控件中的所有VisualBasic的事件。当选择了一个事件,则与事件名称相关的事件过程就会显示在代码窗口中。如果在【对象】框中显示的是【通用】,则【过程】框会列出所有声明,以及为此窗体所创建的常规过程。如果正在编辑模块中的代码,则【过程】框会列出所有模块中的常规过程。在上述两实例中,在【过程】框中所选的过程都会显示在代码窗口中。模块中的所有过程会出现在一个单一滚动条的列表中,它们是按名称的字母来排列的。可以从代码窗口上端的下拉式列表中选取一个过程,此时指针会移到所选过程的第一行代码上面。将拆分栏向下拖放,可以将代码窗口分隔成两个水平窗格,两者都具有滚动条。可以在同一时间查看代码中的不同部分。显示在对象框以及【过程/事件】框中的信息,是以当前拥有焦点的窗格之内的代码为准。将拆分栏拖放到窗口的顶部或下端,或者双击拆分栏,都可以关闭一个窗格。代码窗口的左边的灰色区域为边界标识条,在此会显示出边界标识,在边界标识条上单击鼠标,可以在对应的行上添加断点。单击【过程查看】图标,可以显示所选的过程,同一时间只能在【代码】窗口中显示一个过程。单击【全模块查看】图标,显示模块中全部的代码。11.2.1.2【立即窗口】【立即窗口】在中断模式时会自动打开,且其内容是空的。用户可以在窗口中执行如下操作:键入或粘贴一行代码,然后按下Enter键来执行该代码。从【立即窗口】中复制并粘贴一行代码到【代码】窗口中,但是【立即窗口】中的代码是不能存储的。【立即窗口】在调试程序过程中非常有用,用户如果要测试某个语法或者查看某个变量的值,就需要用到【立即窗口】。因为在【立即窗口】中,输入一行语句后按Enter键即可执行,如图11-4所示。【立即窗口】可以拖放到屏幕中的任何地方,除非已经在【选项】对话框中的【可连接的】选项卡内,将它设定为停放窗口。可以按下关闭框来关闭一个窗口。如果关闭框不是可见的,可以先双击窗口标题行,让窗口变成可见的。注意:在中断模式下,立即窗口中的语句,是根据显示在过程框的内容或范围来执行的。举例来说,如果键入Printvariablename,则输出的就是局域变量的值。这和在程序中止时Print方法在正在执行的过程产生一样。11.2.1.3【本地窗口】可自动显示出所有在当前过程中的变量声明及变量值。若【本地窗口】为可见的,则每当从执行方式切换到中断模式或是操纵堆栈中的变量时,它就会自动地重建显示,如图11-5所示。下面介绍窗口中各对象的意义:【调用堆栈】按钮:打开【调用堆栈】对话框,它会列出调用堆栈中的过程,如图11-6所示。【表达式】:列出变量的名称,不能在此编辑数据。列表中的第一个变量是一个特殊的模块变量,可用来扩充显示出当前模块中的所有模块层次变量。对于类模块,会定义一个系统变量。对于常规模块,第一个变量是。全局变量以及其他工程中的变量,都不能从【本地窗口】中访问。【值】:列出所有变量的值。所有的数值变量都应该有一个值,而字符串变量则可以有空值。当按下【值】字段中的一个值,指针就会变成“I”形,且值会被点划线包围。可以编辑一个值,并且按下ENTER键,向上键,向下键,TAB键,SHIFT+TAB键或用鼠标在屏幕上单击,使编辑生效。如果这个值是非法的,则所编辑的字段的值会以突出显示,并且会出现一个错误信息框来提示,此时可以按下ESC键来中止更改。拥有子变量的变量可以被扩充或折叠起来。折叠起来的变量不会显示一个值,而变量每一次会显示一个值,并且出现在变量的左边。【类型】:列出变量的类型,不能在此编辑数据。11.2.1.4对象浏览器显示出对象库以及工程的过程的可用类、属性、方法、事件及常数变量。用户可以用它来搜索及使用既有的对象,或是来源于其他应用程序的对象。单击【视图】菜单中的【对象浏览器】命令或者按F2键,即可显示如图11-7所示的【对象浏览器】对话框。【搜索文本】框包含要用来做搜索的字符串。可以键入或选择所要的字符串。搜索文本框中包含最后四次输入的搜索字符串,直到关闭此工程为止。在键入字符串时,可以使用标准的VisualBasic通配符。如果要查找完全相符的字符串,可以用快捷菜单中的【全字匹配】命令。输入搜索的字符串完毕后单击【搜索】按钮,即可激活类或属性、方法、事件或常数等符合在【搜索文本】框中键入字符串的库搜索,并且打开有适当信息列表的【搜索结果】框。如果单击【显示/隐藏搜索结果】按钮,可以打开或隐藏【搜索结果】框。【搜索结果】框改变成显示从【工程/库】列表中所选出的工程或库的搜索结果。搜索结果会默认地按类型创建组并从A到Z排列。11.2.1.5工程资源管理器工程资源管理器是VisualBasic编辑器中用以显示VBA项目成员的窗口。VBA项目成员是指与用户文档相关的用户自定义窗体(Form)、模块(Modules)和Office2000对象(MicrosoftObject)等。窗体、模块和Office2000对象等的集合构成了VBA项目。VBA项目成员以树形结构显示,以便于用户查看和使用VBA项目及其成员。工程资源管理器显示与用户在Office2000中打开的每一个文档相关的VBA项目。例如,在Word2000中,若用户打开了三个文档,那么工程资源管理器将显示与这三个文档有关的VBA项目,如图11-8所示。在图11-8所示的工程资源管理器中,每一个文档构成了一个的VBA项目。与文档相关的模块、工作表、窗体等均被视为一个的对象(VBA项目成员)。工程资源管理器允许用户方便地选择要使用的对象。在用户选择了要编辑的对象以后,VisualBasic编辑器自动打开相关的工具。例如,当用户选择了一个窗体时,该窗体以及窗体工具栏将显示在屏幕上;当用户选择了ThisDocument对象时,ThisWorkbook代码窗口将显示在屏幕上。工程资源管理器为用户提供了以下两种选择和编辑对象的方法:双击要选择的对象。首先单击要选择的对象,然后单击鼠标右键,在弹出的快捷菜单中选择【查看代码】或【查看对象】命令。11.2.1.6【属性】窗口【属性】窗口用来查看和设置对象的属性。例如,用户可以使用【属性】窗口设置和查看用户创建的窗体、Word模板等对象的属性。在【视图】菜单中单击【属性窗口】命令可显示【属性】窗口。在【属性】窗口中仅仅显示与选择的对象相关的属性。【属性】窗口被划分为左右两部分:与当前对象相关的属性显示在左半部分,对应的属性值显示在右半部分,如图11-9所示。要选择一个对象,可以直接从【属性】窗口顶端的下拉列表中选取,也可以在工程资源管理器中选取然后返回到【属性】窗口。要改变一个对象的属性,应首先在【属性】窗口的左半部分选择该属性,然后在右半部分单击并编辑该属性值。有些属性值被限定在一个预定义的列表中。在这种情况下,属性值文本框将由一下拉列表框替代。11.2.1.7【监视窗口】当工程中有监视表达式定义时,就会自动出现【监视窗口】,如图11-10所示。用户可以在【监视窗口】中拖动一个选取的变量,到【立即窗口】中。可以编辑一个值,并且按下Enter键,向上键,向下键,Tab键,Shift+Tab键或用鼠标在屏幕上单击,使编辑生效。如果这个值是无效的,则编辑字段会保持在作用中,并且值会以突出显示,且会出现一个消息框来描述这个错误。可以按下ESC键来中止更改。如果在进入中断模式时,监视表达式的内容不在范围内,则当前的值并不会显示出来。如果用户要在添加监视表达式定义时,可以在【监视窗口】中单击右键,然后在弹出的快捷菜单中选择【添加监视】命令即可弹出如图11-11所示的【添加监视】对话框。11.2.2自定义VisualBasic编辑器11.2.2.1设置编辑器自动功能在VisualBasic编辑器中,有一些自动功能可以使用户在编程时非常方便快捷。要设置编辑器自动功能,请单击【工具】菜单中的【选项】菜单项,并在弹出的【选项】对话框中选择编辑器】选项卡,如图11-12所示。在【代码设置】选项组中,可以进行设置的项目及其意义为:自动语法检测??决定VisualBasic是否在输入一行代码之后自动修正语法。要求变量声明??决定在模块中是否需要明显的变量声明。选择这个选项会在任一新模块的标准声明中添加OptionExplicit语句。自动显示列出成员??显示一列表,其包含的信息可以逻辑地完成当前插入点的语句。自动显示快速信息??显示所键入函数及其参数的信息。自动显示数据提示??显示出指针所在位置的变量值。只能在中断模式下使用。自动缩进??定位代码的第一行;所有接下来的代码会在该定位点开始。Tab宽度??设置定位点宽度,范围从1到32个空格;默认值是4个空格。在【窗口设置】选项组中,可以设置的项目及其意义为:编辑时可拖放文本??可以在当前代码中,从【代码】窗口拖放元素到【立即窗口】或【监视窗口】。默认为查看所有模块??设置新模块的默认状态,在【代码】窗口中查看过程,单一滚动列表或是一次只看一个过程。这不会改变当前已打开模块的视图方式。过程分隔符??可以显示或隐藏【代码】窗口中出现在每个过程尾端的分隔符条。11.2.2.2设置编辑器格式在【选项】对话框中,选择【编辑器格式】选项卡可以指定VisualBasic代码的外观。如图11-13所示。在【代码颜色】列表框中选择要设定的文本样式,然后设置其相应的字体和颜色即可,其效果可以在预览框中查看。11.2.2.3设置通用选项有一些关于窗体的网格、错误捕捉方式、编译方式等选项,可以在【选项】对话框中的【通用】选项卡中设置,如图11-14所示。在【窗体网格设置】选项组中,可以确定窗体在编辑时的外观。选中【显示网格】复选框,就确定了要显示网格。并在【宽度】框和【高度】框中确定窗体上网格的宽度(2到60点)和高度(2到60点)。如果选中【对齐控件到网格】复选框,可以自动将控件的外缘放在网格上。如果选中【项目折叠收起时隐藏窗口】复选框,确定当一工程在工程资源浏览器中折叠后工程、UserForm、对象或模块窗口是否应自动关闭。如果选中【在丢失当前状态前通知】复选框,确定是否会收到一消息,通知在运行的工程中所要求的动作将引起所有模块级变量被重置。如果在VisualBasic开发环境处理错误,可以设置【错误捕捉】选项,此选项会影响所有在此设置改变后所激活的VisualBasic实例。发生错误则中断??任何使工程进入中断模式的错误,无论是否有活动的错误处理及无论代码是否在类模块中。在类模块中中断??任何在类模块中,使项目在生成错误的类模块的代码行处,进入中断模式的无法处理错误。遇到未处理的错误时中断??如果有一个活动的错误处理,这个错误会被捕捉而不进入中断模式。如果没有活动的错误处理,这个错误会使工程进入中断模式。类模块中的无法处理错误,使工程在使用到对象类中在违反过程的代码行处进入中断模式。用户还可以对【编译方式】进行设置:选中【请求时编译】复选框,确定工程在开始前是否要完全编译,或只编译需要的代码,以便让应用程序尽快开始执行。选中【后台编译】复选框,确定在运行时,是否用空闲时间在后台完成工程的编译。后台编译可以改善运行时的执行速度。这个特性只有在选定【请求时编译】的情形下才能使用。11.2.2.4设定可连接的窗口用户可以选出要连接的窗口。连接发生在当窗口附加到其他可连接的窗口或应用程序窗口的边缘时。当移动一可连接的窗口时,该窗口很快地移向此位置。可以移动一个非可连接的窗口到屏幕上的任何地方,并将它留在那里。要设定可连接的窗口,在【选项】对话框中选中【可连接的】选项卡,如图11-15所示。选择要使它可连接的窗口,并清除不要的那些。11.2.3设置工程的安全性尽管在大多数情况下,我们允许用户访问自己所创建的模块;但是为了防止他人篡改、运行已创建的模块,就必须对模块进行保护。在本节中,将学习VBA有哪些安全措施和如何进行安全措施设置以及怎样调整权限等内容。为了保护所创建的VBA模块,可以采取下面三种方法:调整模块属性,使其中代码不能被读或编辑。为模块设置密码。创建用户和组帐户,在此基础上为模块设置权限(这只适用于Access)。可以在VisualBasic编辑器中设置工程项目(Project)的保护,其具体步骤如下:(1)打开VisualBasic编辑器,用鼠标右键单击想要保护的工程项目,用鼠标左键单击【Project属性】,弹出【Project?工程属性】对话框,(2)在对话框中,选择【保护】选项卡,如图11-16所示。(3)选中【查看时锁定工程】复选框,这样其他人就不能查看或编辑。(4)在【密码】文本框中键入设置的密码。(5)在【确认密码】文本框中,再次键入密码以确认,然后,单击【确定】按钮。这样密码设置完成。当下一次查看或者编辑工程时,屏幕将显示【Project密码】对话框并要求输入密码。11.2.4设置条件编译参数用户可以使用条件编译的方式,来选择性地运行代码块,例如,调试语句会去比较对于相同的程序任务使用不同方法的速度,或是通过不同的语言来本地化一个应用程序。可利用#Const指令在代码中声明一个条件编译常数。并且可以利用#If...Then...#Else指令来指示代码块做条件编译。下列示例中是以conDebug变量为基础来运行调试代码或者产生代码。在声明区声明公用编辑常数。#ConstconDebug=1SubSelectiveExecution()#IfconDebug=1Then.'用调试语句运行代码。#Else.'运行常规代码。#EndIfEndSub用户可以在工程属性对话框中设置条件编译参数,如图11-17所示。