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