vba开发实用指南.docx

上传人:b****3 文档编号:4936649 上传时间:2022-12-11 格式:DOCX 页数:33 大小:32.11KB
下载 相关 举报
vba开发实用指南.docx_第1页
第1页 / 共33页
vba开发实用指南.docx_第2页
第2页 / 共33页
vba开发实用指南.docx_第3页
第3页 / 共33页
vba开发实用指南.docx_第4页
第4页 / 共33页
vba开发实用指南.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

vba开发实用指南.docx

《vba开发实用指南.docx》由会员分享,可在线阅读,更多相关《vba开发实用指南.docx(33页珍藏版)》请在冰豆网上搜索。

vba开发实用指南.docx

vba开发实用指南

VBA开发实用指南

  VBA(VisualBasicforApplication)是Office自带的二次开发工具,可为日常办公带来极大的便利。

本文讲述Office各个成员VBA开发的常用对象和其相关的属性、方法和事件(包括Word、Excel、PowerPoint等),并给出相关的实例代码。

  一、VBA基础

  1.什么是VBA

  在Office对于一些烦琐、重复的操作,用户可以通过“宏”来实现。

“宏”即是由一系列命令和指令组合而成的命令集,其本质是VBA代码组成的程序。

VBA是微软在其开发的应用程序中共享的通用自动化语言。

  2.录制/运行宏

  VBA初期开发可通过录制“宏”的操作来获取代码,在Office中几乎所有的操作均可通过录制“宏”来获取代码。

这里,我们通过一个简单的“宏”录制实例来学习:

在Word中将所有的“电脑”字样替换为“计算机”,并插入一张4行2列的表格。

  在Office中录制宏,可单击“工具→宏→录制新宏…”菜单命令实现,单击该命令后将出现“录制宏”对话框,如图1所示。

  其中,“宏名”框用于为录制的宏设置名称,可使用默认的“Macro1”。

“工具栏”和“键盘”二个按钮分别用于设置宏的触发位置。

“将宏保存在”框可设置宏的保存位置,一般包括“Normal.dot”(共用模板)和当前文档2种,建议保存在当前文档中,以免对所有文档产生影响。

在“说明”框中可输入对该宏的相关说明。

单击“确定”按钮,即可开始录制宏。

此时在文档编辑界面中将显示“宏录制”工具栏。

该工具栏有2个与录音机非常类似的按钮,第一个按钮为“停止录制”,第二个按钮为“暂停录制”。

在录制过程中可随时通过这二个按钮来进行控制。

  随后按常规操作来实现前述的任务,操作完成后单击“停止录制”按钮,结束录制即可。

  注意:

录制“宏”时可使用鼠标单击菜单和按钮,但无法录制鼠标在文档窗口中的移动,因此必须通过键盘来实现这些动作。

此外,Office中所有录制的“宏”,其名称的首字符必须为字母或汉字、数字及下划线(名称最多可为255个字符),且“宏”名称中不允许包含空格。

  运行已录制的“宏”,可单击“工具→宏→宏”菜单命令。

在出现的“宏”对话框的“宏名”下拉框中选择需运行的宏,然后单击“运行”按钮即可。

随后Word将自动重现前述执行的操作,避免了重复的办公操作。

  3.宏的局限性

  虽然Office的大部分操作均可用录制“宏”的方法来保存,但录制的“宏”仅“忠实”地再现了特定的操作,对于一些需要进行逻辑判断和流程控制的操作,则显得力不从心,如自动替换多个不同的内容时,按录制“宏”的方式操作,需要按替换内容的数量录制多个“宏”,且每个“宏”仅可用于某个内容的替换,反而为工作增添了麻烦。

  录制“宏”存在很多局限性,除无法进行逻辑判断和流程控制操作外,还包括很多。

如交互能力较差、无法显示Office的内置对话框、无法显示用户自定义的窗体和无法创建复杂的工具栏或修改菜单等。

  4.VBA编辑环境

虽然“宏”存在很多局限性,但通过录制“宏”获取了VBA代码后即可通过VBA编辑器来为代码添加逻辑控制并设计流程等。

以Word2002为例,“宏”录制完成后,可在运行宏对话框中选择录制的宏并单击“编辑”按钮,即可显示VBA编辑环境,如图2所示。

VBA编辑环境由工程资源管理器、属性窗口和代码编辑/窗体设计窗口等部分组成。

在工程资源管理器中列出当前打开的所有VBA项目,属性窗口用于设置相关对象的属性,代码编辑/窗体设计窗口则可输入模块的代码或编辑窗体和类模块。

  二、VBA开发共用对象详解

  VBA和其他面向对象的开发语言类似,同样有非常多的对象组成,且不同的Office成员即提供了大量的开发对象,如工具栏、Office助手、内置对话框和窗体等。

  

(一)工具栏及其控件对象

  在Office中通过VBA开发工具栏和菜单,需使用Office提供的CommandBar、CommandBarButton、CommandBarComboBox等对象,这些对象即代表工具栏、工具栏按钮和工具栏下拉框,通过这些对象可编制出各类复杂的工具栏或菜单。

  1.CommandBars集合

  该集合代表Office所有的工具栏,可用名称或索引号指定菜单栏或工具栏,但仅可用名称指定一个菜单、快捷菜单或子菜单。

如两个或两个以上自定义菜单或子菜单名称相同,则返回第一个具有该名称的对象。

  其Add方法用于新建一个工具栏,并返回CommandBar对象。

  语法:

expression.Add(Name,Position,MenuBar,Temporary)

  参数说明:

  Name为可选的Variant类型,代表新工具栏的名称。

如果省略,则使用默认的名称;Position为可选的Variant类型,代表新工具栏的位置。

该参数值可通过VBA常量进行设置,如msoBarLeft、msoBarTop、msoBarRight、msoBarBottom常量(设置新工具栏位于软件工具栏中位置);msoBarFloating常量(代表新工具栏可移动);msoBarPopup常量(代表新工具栏为快捷菜单)等;MenuBar为可选的Variant类型,用于设置是否用新工具栏替换活动工具栏;Temporary为可选的Variant类型,用于设置新工具栏是否暂时有效。

  2.CommandBar对象

  该对象代表应用程序中的工具栏,新建工具栏的控件均以该对象为载体。

  

(1)Controls属性:

返回CommandBarControls对象,代表指定工具栏中的所有控件。

  

(2)NameLocal属性:

返回由应用程序版本语言所设置的工具栏名称,如对软件的内置工具栏设置会出现错误。

  (3)Position属性:

返回或设置工具栏的位置,值可通过VBA常量进行设置,如msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup或msoBarMenu等。

  (4)Type属性:

返回或设置工具栏的类型,值可通过VBA常量进行设置,如msoBarTypeNormal(工具栏为普通类型)、msoBarTypeMenuBar(工具栏为菜单类型)、msoBarTypePopup(工具栏为弹出菜单类型)等。

  (5)Reset方法:

将内置工具栏重置为默认设置,在恢复软件原有工具栏或菜单时非常有用。

重置内置工具栏将删除其中的自定义控件并恢复其内置控件。

  3.CommandBarControls集合

  该集合代表工具栏中的所有工具栏控件。

  其Add方法用于在CommandBarControls集合中增加一个工具栏控件。

  4.CommandBarControl对象

  该对象代表工具栏控件,对自定义工具栏控件,可使用CommandBarButton、CommandBarComboBox和CommandBarPopup对象进行定义,而对软件内置的控件进行操作,而该控件又无法使用上述三个对象表示,则可使用CommandBarControl对象。

  

(1)BeginGroup属性:

用于设置工具栏控件是否分组显示。

  

(2)Caption属性:

用于设置工具栏控件的标题文字,并可作为默认的控件屏幕提示。

  (3)Id属性:

用于设置CommandBarButton、CommandBarComboBox和CommandBarControl对象的功能,这些控件可直接设置为内置工具栏控件的ID,这样该控件即具备了软件内置的相应功能,自定义控件的ID属性均需设置为1。

  (4)Copy方法:

将工具栏控件复制到已有的工具栏中。

  语法:

expression.Copy(Bar,Before)

  参数说明:

  Bar为可选的Variant类型,代表目标工具栏,如果省略,则控件将复制到自身所在的工具栏;Before为可选的Variant类型,代表新控件在指定工具栏的位置,即新控件将添加至该位置的控件前,如果省略,则控件将复制到工具栏的末尾。

  (5)Type属性:

返回工具栏控件的类型,可通过VBA常量进行引用,常用的工具栏控件类型如下表所示:

常量名称

含义

msoControlButton

控制按钮

msoControlButtonDropdown

带下拉列表的按钮

msoControlButtonPopup

带弹出菜单的按钮

msoControlComboBox

下拉组合控制框

msoControlDropdown

下拉列表控制框

msoControlEdit

文本框

msoControlExpandingGrid

可扩展的表格

msoControlGraphicCombo

图像下拉组合框

msoControlGraphicDropdown

图像下拉列表框

msoControlGrid

表格

msoControlPopup

弹出菜单

  5.CommandBarButton对象

  该对象代表工具栏的按钮控件。

  

(1)OnAction属性:

返回或设置VisualBasic代码过程名(该代码过程不可使用参数),该过程将在单击按钮后运行。

  

(2)Style属性:

返回或设置工具栏按钮的显示方式。

值可通过VBA常量进行设置,常用的工具栏按钮控件类型如下表所示:

常量名称

含义

msoButtonIcon

包含图标的按钮

msoButtonCaption

包含标题的按钮

ButtonIconandCaption

包含图标和标题的按钮

msoButtonIconAndCaptionBelow

包含图标和标题,且标题位于底部的按钮

msoButtonIconAndWrapCaption

包含图标和标题,且标题自动换行的按钮

msoButtonWrapCaption

包含标题,且标题自动换行的按钮

  (3)TooltipText属性:

返回或设置工具栏按钮控件的屏幕提示。

  (4)FaceId属性:

返回或设置工具栏按钮的图标编号,设置工具栏按钮的外观而非其功能,自定义图标的工具栏按钮,其FaceId属性值为0。

  (5)CopyFace方法:

将工具栏按钮控件的图标复制到剪贴板。

  (6)PasteFace方法:

将剪贴板的图标内容粘贴至工具栏按钮控件。

  (7)Execute方法:

运行工具栏控件对应的过程或内置命令。

  6.CommandBarComboBox对象

  该对象代表工具栏中的组合框控件。

  

(1)DropDownLines属性:

返回或设置组合框控件的行数,如将其设置为0,则控件行数将取决于列表的条目数。

  

(2)List属性:

返回或设置组合框控件中某列表项的值,对内置组合框控件只读。

  (3)OnAction属性:

返回或设置VisualBasic代码过程名(该代码过程不可使用参数),该过程在单击或更改组合框控件值时运行。

  (4)Type属性:

返回或设置组合框控件的显示方式。

  (5)AddItem方法:

用于在组合框控件中添加一个列表项,且该组合框控件必须为自定义的控件。

  (6)RemoveItem方法:

用于从组合框控件中删除一个列表项。

  

(二)助手对象

  Office助手是一组卡通动画人物,这些助手可提供友好的信息提示,并可通过自定义对话框(又称“气球”)的文字格式和控件来实现简单的交互。

  1.Assistant对象

  该对象代表Office助手,可通过Application对象的Assistant属性返回Assistant对象。

默认助手为“大眼夹”(即“Clippit”),用户可在右键单击助手后出现的快捷菜单中单击“选择助手”菜单项,在弹出的“Office助手”对话框中即可选择不同的助手。

  

(1)Animation属性:

用于返回或设置Office助手的动画效果。

如应用于Balloon对象,则“助手”仅在显示气球时才会出现动作,可通过常量赋值,常用的常量及其含义如下表所示:

常量名称

代表的动作

msoAnimationAppear

助手出现

msoAnimationBeginSpeaking

助手开始说话

msoAnimationCheckingSomething

助手检查动作

msoAnimationDisappear

助手消失

msoAnimationGoodbye

助手说“再见”

msoAnimationGreeting

助手致欢迎的动作

msoAnimationIdle

助手休息的动作(为默认动画效果类型)

msoAnimationPrinting

助手打印的动作

msoAnimationSaving

助手保存的动作

msoAnimationSearching

助手开始查找的动作

msoAnimationThinking

助手考虑的动作

  

(2)AssistWithAlerts属性:

用于设置助手气球是否发送给应用程序警告信息。

  (3)AssistWithHelp属性:

用于设置当用户按F1键显示帮助时助手是否出现。

  (4)AssistWithWizards属性:

用于设置助手是否提供向导型的联机帮助。

  (5)FeatureTips属性:

用于设置助手是否更有效地提供有关应用程序功能信息。

  (6)GuessHelp属性:

用于设置助手是否显示帮助主题列表。

  (7)FileName属性:

用于设置助手所使用的文件名,助手文件的扩展名为“acs”,一般位于Office的安装目录下。

其中“孙悟空”为mnkyking.acs;“大眼夹”为Clippit.acs;“恋恋”为OffCat.acs;“聪聪”为Rocky.acs;“七巧板”为Logo.acs;“小灵通”Dot.acs;“美丽家园”为MNature.acs;“F1”为F1.acs。

  (8)NewBalloon属性:

用于新建助手气球,并返回Balloon对象。

  (9)On属性:

用于设置是否使用助手。

  (10)Sounds属性:

用于设置助手是否发出与动画对应的声音。

  (11)TipOfDay属性:

用于设置每次启动Office时,助手是否显示专用的提示。

  2.Balloon对象

  该对象代表气球,助手可在该气球中显示标题、文字和一些控件,通过NewBalloon属性可返回Balloon对象,且任意时刻仅有一个气球可视。

  

(1)BalloonType属性:

用于设置助手所用的气球类型,可通过常量赋值。

创建Balloon对象时,初始值为msoBalloonTypeButtons常量。

  

(2)Button属性:

用于设置助手气球底部按钮类型。

创建Balloon对象时,初始值为msoButtonSetOK。

  (3)Icon属性:

用于设置助手气球左上角的图标类型,可通过常量赋值。

  (4)Checkboxes属性:

返回BalloonCheckboxes集合,即气球中的所有复选框。

  (5)Heading属性:

用于设置助手气球中的标题。

气球标题和文本均支持包含下划线和系统调色板16色的文字。

  如需显示包含下划线的文字,可通过“{ul}”、“{ul1}”语法来开始下划线和“{ul0}”语法来清除下划线;如需改变文字颜色,可通过“{cfnumber}”语法,其中number常数为系统调色板支持的16种颜色。

  (6)Labels属性:

返回BalloonLabels集合,即气球中的所有标签。

  (7)Mode属性:

用于设置气球的模态,即是否在显示气球的同时允许用户在程序中继续工作。

  (8)Text属性:

用于设置助手在气球标签、复选框或直接显示部分的文字。

  (9)Close方法:

用于关闭活动的非模态气球,仅在回调过程中才可使用。

  (10)Show方法:

用于显示指定的气球对象。

  3.BalloonCheckBox对象

  该对象代表气球中的复选框控件。

  Checked属性:

返回是否已选择气球中的指定复选框。

  (三)内置对话框对象

  Office使用了大量的内置对话框,在Word和Excel中提供了开发接口,使开发者可充分利用内置对话框实现很多操作,尤其在Word中可使用多种方法显示内置对话框,实现不同的功能需求,这里,我们以Word的内置对话框为例进行讲解。

  1.Dialogs集合对象

  该集合对象代表Word或Excel中的Dialog对象集合,其中每个Dialog对象均代表一个内置对话框,无法在Dialogs集合中创建新的内置对话框,也无法添加对话框。

  2.Dialog对象

  该对象代表内置对话框。

  

(1)CommandName属性:

用于返回显示指定内置对话框对应的过程名。

  

(2)DefaultTab属性:

用于设置显示指定对话框时,其被激活的选项卡。

  (3)Display方法:

用于显示指定的内置对话框,并直至用户关闭该对话框或超时,使用显示内置对话框时,不会执行任何操作(即仅用于显示),但可返回用户关闭对话框时所单击的按钮代号。

  其中,返回-2,代表“关闭”按钮;返回-1,代表“确定”按钮;返回0,代表“取消”按钮;返回大于0的值,则1代表第一个按钮,2代表第二个按钮,以此类推。

  (4)Execute方法:

用于应用内置对话框的当前设置。

  (5)Show方法:

用于显示并执行内置对话框,即如同用户通过菜单或工具栏打开对话框,和Display方法相同,均返回用户关闭对话框时所单击的按钮代号。

  (6)Update方法:

用于更新内置对话框的参数值。

  3.显示内置对话框

  通过VBA代码可控制内置对话框的显示,如需调用指定的内置对话框,可将Dialogs属性通过常量进行赋值,如“Dialogs(wdDialogFileOpen).Show”可显示Word的“打开”对话框。

在前述代码中,如将该语句的返回值赋予Dialog变量,即可通过该变量返回或设置对话框的选项,代码如下所示:

  SettestDialog=Dialogs(wdDialogFileOpen)

  合理使用内置对话框可实现很多的功能,Word和Excel中提供接口的内置对话框非常多,限于篇幅,本文不做详细介绍,读者可参考VBA的联机帮助。

  (四)窗体和相关控件对象

  VBA的编辑器和VB非常类似,因此也提供了窗体和相关的控件,但又由于Office的特点使VBA中的窗体、控件和VB存在一些差异。

  1.用户窗体知识点

  窗体是程序实现和用户交互的接口,通过窗体不仅可改善程序的界面友好性,而且可进一步增强、完善程序的功能。

在VBA编辑器中可创建用户窗体,在工程资源管理器中右键单击项目,在出现的菜单中选择“插入→用户窗体”命令,随后在设计界面中将显示默认窗体和控件工具箱,该控件工具箱和VB的控件工具箱很类似,如图3所示。

  2.用户窗体常用控件

  虽然VBA窗体开发所用的控件和VB较为类似,但其属性和方法和VB存在一定的差异:

  

(1)标签控件:

该控件用于显示不可编辑的文本,默认属性为Caption属性,默认事件为Click事件。

  

(2)文本框控件:

该控件用于显示可编辑的文本信息,是VBA开发中最常用编辑控件,默认属性为Value属性,默认事件为Change事件。

  (3)复合框控件:

该控件将列表框和文本框进行结合,用户可进行输入和列表框选择操作,默认属性为Value属性,默认事件为Change事件。

  (4)列表框控件:

该控件用于显示值列表,用户可选择一个或多个列表项,VBA中的列表框可通过列表形式和选项按钮或复选框的形式使用,默认属性为Value属性,默认事件为Click事件。

  (5)复选框控件:

该控件用于显示选择的状态,即允许用户从两个值(如True或False)中选择一个。

如选择则将显示标记,默认属性为Value属性,默认事件为Click事件。

  (6)选项按钮控件:

该控件用于显示多选项中每一项的选择状态,默认属性为Value属性,默认事件为Click事件。

  (7)切换按钮控件:

该控件用于显示选择状态,默认属性为Value属性,默认事件为Click事件。

  (8)框架控件:

该控件用于创建功能或视觉角度的控件组,默认事件为Click事件。

  (9)命令按钮控件:

该控件用于启动、结束或中断操作,其Click事件是窗体编程中最常用的事件代码,默认属性为Value属性,默认事件为Click事件。

  (10)表头控件:

该控件用于将一系列相关控件显示为一个多表的集合,默认属性为SelectedItem属性,默认事件为Change事件。

  (11)多页控件:

该控件用于将多页面的内容以单个控件的方式实现,在处理不同类别的大量信息时很有用,默认事件为Change事件。

  (12)滚动条控件:

该控件用于按滚动块位置,返回或设置变量值,默认属性为Value属性,默认事件为Change事件。

如需创建横向或纵向的滚动条,可在窗体设计时横向或纵向拖动滚动条控制点。

  (13)旋转按钮控件:

该控件用于增加及减少变量数值,默认属性为Value属性,默认事件为Change事件。

  (14)图像控件:

该控件用于显示图片,其支持的图片文件格式包括:

bmp、cur、gif、ico、jpg和wmf等,默认事件为Click事件。

  在VBA窗体设计中,可将一些开发中使用的控件全部选择后,直接拖至工具箱中,工具箱会添加一个“控件组”,在窗体设计中可直接将该控件组放置于窗体,大大提高了效率(该特点为VBA所独有)。

  如开发者需使用VBA标准控件箱未提供的其他控件,可右键单击工具箱,在出现的菜单中选择“附加控件”命令,在出现的对话框中进行选择即可。

  3.用户窗体常用事件

  用户窗体的常用事件和VB窗体有一定的区别。

  

(1)Initialize事件:

该事件发生在加载对象后和显示对象前,通常在该事件中初始化变量值或设置控件的属性。

  

(2)QueryClose事件:

该事件发生在用户窗体关闭前,通常在该事件中检查用户窗体中未完成的操作。

  cancel参数:

整型,如将该参数设置未非零值,则可阻止关闭用户窗体。

  Closemode参数:

该参数用于获取触发QueryClose事件的原因。

  (3)Terminate事件:

该事件将所有引用的对象变量设置为Nothing常量,即删除对象的引用。

该事件发生在卸载对象后。

如非正常退出程序,则不会触发。

  (五)类模块

  VBA开发也提供了类模块结构,使开发者可将常用操作通过类进行合理封装,实现代码的复用和程序的结构化。

  1.创建类模块

  VBA中创建类模块非常简单,在VBA编辑器的工程资源管理器中右键单击项目,在出现的菜单中选择“插入→类模块”命令,随后在“工程资源管理器”中会出现添加的类模块,默认名称为“类1”,单击该类模块,可设置其属性,一般需设置其“Name”属性,以方便使用。

双击该类模块,即可按窗体的操作方法来输入代码。

  2.类模块常用事件

  类模块中包含Initialize和Terminate二个事件。

  

(1)Initialize事件:

该事件用于初始化类模块所用的数据。

当程序中创建类模块时触发该事件。

  

(2)Terminate事件:

当程序中类实例从内存删除时触发该事件,且该事件仅在程序正常结束时触发。

  三、O

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1