VBA最最精典的教程(基础入门)_第1页
VBA最最精典的教程(基础入门)_第2页
VBA最最精典的教程(基础入门)_第3页
VBA最最精典的教程(基础入门)_第4页
VBA最最精典的教程(基础入门)_第5页
已阅读5页,还剩54页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VBA简易教程简易教程 l直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用 程序,人们不得不学习 一种不同的自动化语言. l例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微 软决定让它开发出来的应用程序共享一种通用的自动化语言- Visual Basic For Application(VBA),可以认为VBA是非常流行的应用程序开发语言 VASUAL BASIC 的子集.实际上VBA是“寄生于”VB应用程序的版本.VBA和VB的区别包括 如下几个方面: 1. VB是设计用于创建标准的应用程序,而VBA是使已有

2、的应用程序(EXCEL等)自动 化 2. VB具有自己的开发环境,而VBA必须寄生于已有的应用程序. 3. 要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行 文件(*.EXE),而VBA开发的程序必须依赖于它的“父”应用程序,例如EXCEL. l 尽管存在这些不同,VBA和VB在结构上仍然十分相似.事实上,如果你已经了解了VB, 会发现学习VBA非常快. lVBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可 以创建自定义的解决方案. VBAVBA是什么是什么 EXCELEXCEL环境中基于应用程序自动化的优点环境中基于应用程序自动化的优点

3、 l 也许你想知道VBA可以干什么?使用VBA可以实现的功能包括: 使重复的任务自动化使重复的任务自动化 自定自定义义EXCEL工具工具栏栏, 菜菜单单和界面和界面 简简化模板的使用化模板的使用 自定自定义义EXCEL,使其使其 成成为为开开发发平台平台 创创建建报报表表 对对数据数据进进行复行复杂杂的的 操作和分析操作和分析 EXCELEXCEL环境中基于应用程序自动化的优点环境中基于应用程序自动化的优点 l 用用EXCELEXCEL作为开发平台有如下原因作为开发平台有如下原因: : EXCELEXCEL本身功能强大本身功能强大, ,包括打印包括打印, ,文件处理文件处理, ,格式化和文本编

4、辑格式化和文本编辑 EXCELEXCEL内置大量函数内置大量函数 EXCELEXCEL界面熟悉界面熟悉 可连接到多种数据库可连接到多种数据库 录制简单的宏录制简单的宏 l 在介绍学习在介绍学习VBAVBA之前,应该花几分钟录制一个宏。之前,应该花几分钟录制一个宏。 新新术语术语: :“ “宏宏” ”,指一系列,指一系列EXCEL能能够执够执行的行的VBA语语句。句。 以下将要以下将要录录制的宏非常制的宏非常简单简单,只是改,只是改变单变单元格元格颜颜色。色。请请完成如下步完成如下步骤骤: : 打开新工作簿,确认其他工作簿已经关闭。打开新工作簿,确认其他工作簿已经关闭。 选择选择A1A1单元格。

5、调出单元格。调出“常用常用”工具栏。工具栏。 选择选择“工具工具”“宏宏”“录制新宏录制新宏”。 输入输入“改变颜色改变颜色”作为宏名替换默认宏名,单击确定。作为宏名替换默认宏名,单击确定。 选择选择“格式格式”的的“单元格单元格”,选择,选择“图案图案”选项中的红色选项中的红色, ,单击单击“确定确定”。 单击单击“停止录制停止录制”工具栏按钮,结束宏录制过程。工具栏按钮,结束宏录制过程。 宏名最多可为宏名最多可为255 个字符,并且必须以字母个字符,并且必须以字母 开始。其中可用的字符开始。其中可用的字符 包括:字母、数字和包括:字母、数字和 下划线。下划线。 执行宏执行宏 选择选择任何一

6、个任何一个 单单元格,比如元格,比如A3 选择选择“ “工具工具” ”“宏宏” ” “宏宏” ”, ,显显示示“ “宏宏” ”对话对话框框 选择选择“ “改改变颜变颜色色” ”, , 选择选择“ “执执行行” ”, ,则则A3单单 元格的元格的颜颜色色变为变为 红红色色 当执行一个宏时,当执行一个宏时,EXCELEXCEL按照宏语句执行的情况就像按照宏语句执行的情况就像VBAVBA代码在对代码在对EXCELEXCEL进行进行 “遥控遥控”。但。但VBAVBA的的“遥控遥控”不仅能使操作变得简便,还能使你获得一些使用不仅能使操作变得简便,还能使你获得一些使用 EXCELEXCEL标准命令所无法实

7、现的功能。而且,一旦熟悉了标准命令所无法实现的功能。而且,一旦熟悉了EXCELEXCEL的的“遥控遥控”,你都会,你都会 奇怪自己在没有这些奇怪自己在没有这些“遥控遥控”的情况下的情况下,到底是怎么熬过来的。要,到底是怎么熬过来的。要 执行刚才执行刚才 录制的宏,可以按以下步骤进行:录制的宏,可以按以下步骤进行: 试着选择其它单元格和几个单元格组成的区域,然后再执行宏,以便加深印象。 查看录制的代码查看录制的代码 “改变颜色”是 宏的名称 注意:有一小圆点,它的作 用在于简化语句,小圆点代 替出现在With后的词,它是 With结构的一部分。 Sub改改变颜变颜色色() 改改变颜变颜色色Mac

8、ro xw记录记录的宏的宏2000-6-10 WithSelection.Interior .ColorIndex=3 .Pattern=xlSolid .PatternColorIndex=xlAutomatic EndWith EndSub 到底是什么在控制到底是什么在控制EXCELEXCEL的运行呢的运行呢? ?你可能有些疑惑你可能有些疑惑. . 好好, ,让我们看看让我们看看VBAVBA的语句吧的语句吧. . 编辑录制的代码编辑录制的代码 SubSub 改变颜色改变颜色() () 改变颜色改变颜色 Macro Macro xw xw 记录的宏记录的宏 2000-6-10 2000-6-

9、10 With Selection.Interior With Selection.Interior .ColorIndex = 3 .ColorIndex = 3 End With End With End SubEnd Sub 在上一节,我们录制了一个宏并查看了代码,代码中有两句实际上在上一节,我们录制了一个宏并查看了代码,代码中有两句实际上 并不起作用。哪两句?并不起作用。哪两句? 现在,在宏中作一个修改,删除多余行,直到和下面代码相同:现在,在宏中作一个修改,删除多余行,直到和下面代码相同: 完成后,在工作表中试验一下。完成后,在工作表中试验一下。 你会发现结果和修改前的状况一样。你会

10、发现结果和修改前的状况一样。 在在WithWith 语句前加入一行语句前加入一行: : Range(“A5”).Select Range(“A5”).Select 试着运行该宏试着运行该宏, ,则无论开始选择则无论开始选择 哪个单元格哪个单元格, ,宏运行结果都是使宏运行结果都是使 A5A5单元格变红单元格变红. . 录制宏的局限性录制宏的局限性 l 录录制的宏无判断或循制的宏无判断或循环环能力能力 人机交互能力差人机交互能力差,即用即用户户无法无法 进进行行输输入入,计计算机无法算机无法给给出提示出提示 无法无法显显示示EXCEL 对话对话框框 无法无法显显示自定示自定义义窗体窗体 希望自动

11、化的许多希望自动化的许多EXCELEXCEL过程大多都可以用录制宏来完成过程大多都可以用录制宏来完成. . 但是宏记录器存在以下局限性但是宏记录器存在以下局限性. .通过宏记录器无法完成的工作有通过宏记录器无法完成的工作有: 为宏指定快捷键为宏指定快捷键 你也许希望为经常使用的宏指定快捷键。当给宏指定了快捷键后,你也许希望为经常使用的宏指定快捷键。当给宏指定了快捷键后, 就可以用快捷键来执行宏,而不必通过就可以用快捷键来执行宏,而不必通过“工具工具”菜单。菜单。 注意:当包含宏的工作簿打开时间, 为宏指定快捷键会覆盖EXCEL默认的快捷键。例如:把例如:把CTRL+CCTRL+C指定指定 给某

12、个宏,那么给某个宏,那么CTRL+CCTRL+C 就不再执行复制命令。就不再执行复制命令。 可以在创建宏时指定快捷键,也可以在创建后再指定。 要在创建(录制)宏时指定快捷键,只须在录制宏时 在输入宏名后,在“快捷键”文本框中输入相应的键。 录制宏后指定快捷键也很简单,只需选择“工具”-“宏”,显示“宏” 对话框,选择要指定快捷键的宏,再单击“选项”按钮,通过“选项” 对话框进行设置。 决定宏保存的位置决定宏保存的位置 l 宏可保存在三种可能的位置:宏可保存在三种可能的位置: l 1)当前工作簿。(只有该工作簿打开时,该宏才可用。) l 2)新工作簿。 l 3)个人宏工作簿。 个人宏工作簿个人宏

13、工作簿 个人宏工作簿,是为宏而设计的一种特殊的具有自动隐藏特性的工作簿。个人宏工作簿,是为宏而设计的一种特殊的具有自动隐藏特性的工作簿。 第一次将宏创建到个人宏第一次将宏创建到个人宏 工作簿时,会创建名为工作簿时,会创建名为 “PERSONAL.XLS”的的 新文件。新文件。 如果该文件存在,则每当EXCEL 启动时会自动将此文件打开 并隐藏在活动工作簿后面 如果你要让某个宏在多个工作簿 都能使用,那么就应当创建 个人宏工作簿, 并将宏保存于其中。 个人宏工作簿保存在个人宏工作簿保存在“XLSTART”XLSTART”文件夹中。文件夹中。 具体路径为:具体路径为: C:WINDOWSProfi

14、lesApplication DataC:WINDOWSProfilesApplication Data MicrosoftExcelXLSTARTMicrosoftExcelXLSTART。 个人宏工作簿个人宏工作簿 l 试着练习一下保存一个简单试着练习一下保存一个简单的宏到个人宏工作簿的宏到个人宏工作簿, ,该宏为文本加下划线并改为该宏为文本加下划线并改为 斜体斜体, ,步骤如下步骤如下: : l1 1)建立一个名为建立一个名为“HOUR2”HOUR2”的工作簿,选择的工作簿,选择“工具工具”-“-“宏宏”-“-“录制新宏录制新宏”, ,显示显示“录录 制新宏制新宏”对话框对话框。 l2

15、2)输入)输入“格式化文本格式化文本”作为宏名。作为宏名。 l3 3)从)从“保存在保存在”下拉框中选择下拉框中选择“个人宏工作簿个人宏工作簿”。 l4 4)单击单击“确定确定”按钮按钮. .现在进入录制模式现在进入录制模式 。 l5 5)单击单击“斜体斜体”工具栏按钮工具栏按钮. .一段时间内一段时间内, ,鼠标出现沙漏鼠标出现沙漏, ,特别是在第一次创建个人宏特别是在第一次创建个人宏 工作簿时工作簿时, ,因为因为EXCELEXCEL在创建该工作簿在创建该工作簿 。 l6 6)单击单击“下划线下划线”按钮按钮 。 l7 7)停止录制停止录制 。 使用并编辑个人宏工作簿中的宏使用并编辑个人宏

16、工作簿中的宏 l 刚才已经保存了一个宏到个人宏工作簿,现在可以在任何工作簿中使用 该宏.可按如下步骤操作: l现在A3单元格中,你的 名字变为斜体字还带有 下划线。 l选择“窗口”-“取消隐 藏”,可以将 PERSONAL.XLS显示出来, 通过VBA编辑器可以在其 中的模块中找到“格式 化文本”这个宏。在VBA 编辑器中可以对该宏进 行直接编辑或者删除。 关闭所有EXCEL工作簿 任意打开一个EXCEL文件 (EXCEL自动将个人宏工作簿同时打开并隐藏) 在A3中输入您的名字 选择“工具”-“宏”,显示宏对话框,现在 可以在宏列表中看到“格式化文本”这个宏。 选择“格式化文本”宏,并执行 将

17、宏指定给按钮将宏指定给按钮 l“按钮”是最常见的界面组成元素之一.通过使用“窗体”工具栏,可以为工作簿中的 工作表添加按钮。在创建完一个按钮后,可以为它指定宏,然后你的用户就可以通过 单击按钮来执行宏。在本练习中,将创建一个按钮,并为它指定一个宏,然后用该按 钮来执行宏。具体步骤如下: 打开打开“HOUR2”HOUR2”工作簿工作簿调出调出”窗体窗体“工具栏工具栏 单击单击”窗体窗体“工具栏工具栏 中的中的“按钮按钮”控件控件 在希望放置按钮的在希望放置按钮的 位置按下鼠标左键,位置按下鼠标左键, 拖动鼠标画出一个拖动鼠标画出一个 矩形矩形 在在Excel自动出现的自动出现的“指指 定宏定宏”

18、对话框中,选择对话框中,选择“格式化格式化 文本文本”,单击,单击“确定确定” 试着在某个单试着在某个单 元格中输入文元格中输入文 本,单击按钮本,单击按钮 运行该宏运行该宏 将宏指定给图片或其他对象将宏指定给图片或其他对象 l 要执行宏有多种方法可以选择,可以将宏指定给按钮等控件,还可以指定给 图片、自定义工具栏、窗体甚至可以将宏指定给某个“事件”,比如单击工 作表,双击工 作表,激活工作表,打开工作簿等等,“事件”是一个重要的 概念,除此而外“方法”“对象”都是将来你会经常接触到的。 l 指定宏到图片十分简单,只需单击某个图片,单击快捷菜单中的“指定宏” 进行设置即可。 l 如果不希望在工

19、作表上添加控件或图片执行宏,还有一种方法可以选择:将 宏指定给“工具栏按钮”,可按如下步骤进行: 打开打开“HOUR2”HOUR2”工作簿,选择工作簿,选择 “工具工具”-“-“定义定义”,显示,显示“自定义自定义 工具栏工具栏”对话框对话框 从从“ “类别类别” ”列表框中列表框中选择选择“ “宏宏” ”, , 从从“ “命令命令” ”列表框中列表框中选择选择 “ “自定自定义义按按钮钮” ”。 。 将将“自定义按钮自定义按钮”拖动拖动 到工具栏到工具栏 右键单击该按钮,选择右键单击该按钮,选择 “指定宏指定宏”,显示,显示“指定指定 宏宏”对话框对话框 选择选择“格式化文格式化文 本本”并

20、确定并确定 单击单击“关闭关闭”按钮,按钮, 关闭关闭“自定义工具自定义工具 栏栏”对话框对话框 试着在某试着在某 个单元格个单元格 中输入文中输入文 本,单击本,单击 工具栏按工具栏按 钮运行该钮运行该 宏宏 EXCELEXCEL开发过程简介开发过程简介 l 需要对以下问题有个大致的概念需要对以下问题有个大致的概念. . 谁使用谁使用 这决定了程序的操作这决定了程序的操作 难度及界面感观难度及界面感观 数据来源和保存在哪里数据来源和保存在哪里 这决定了程序的结构这决定了程序的结构 如何操作如何操作 这将决定程序的这将决定程序的 界面和细节界面和细节 数据处理的结果数据处理的结果 最终决定程序

21、的价值最终决定程序的价值 认识不同的控件认识不同的控件 标签标签 用于表现静态文本 分组框分组框 用于将其他控件进行组合 按钮按钮 用于执行宏命令 复选框复选框 是一个选择控件,通过单击可以选择和取消选择,可以多项选择。 选项按钮选项按钮 通常几个选项按钮组合在一起使用,在一组中只能选择一个选项按钮。 列表框列表框 用于显示多个选项并从中选择。只能单选。 组合框组合框 用于显示多个选项并从中选择。可以选择其中的项目或者输入一个其 它值。 滚动条滚动条 不是你常见的来给很长的窗体添加滚动能力的控件,而是一种选择机 制。例如调节过渡色的滚动条控件。包括水平滚动条和垂直滚动条。 微调控件微调控件 也

22、是一种数值选择机制,通过单击控件的箭头来选择数值。例如改变 Windows日期或时间就会使用到微调控件。 开始时请关闭所有工作簿,打开一个新工作簿并另存为“HOUR3”. 在工具栏上单击鼠标右键,从快捷菜单中选择“窗体”,显示“窗体”工具栏. 其中有16个控件,只有9个可放到工作表内。 向工作表添加控件向工作表添加控件 z 创建新工作簿并另存为“HOUR3”,显示“窗体”工具栏。 z 选择“标签”控件。 z 将鼠标定位到E1,此时鼠标变成小十字。 z 按下左键,拖动大约四个单元格长度,放开鼠标左键.如果希望控件大 小易于控制,可在创建该控件时按下ALT拖动。 z 在标签1上单击右键,选择编辑文

23、字,现在可以输入文字.完成后,单 击任何单元格退出文字编辑。 z 通过以上步骤可以添加其它控件到工作表中,不再赘述。 用用EXCELEXCEL设计界面十分简单设计界面十分简单, ,要将控件添加到工作表上要将控件添加到工作表上, , 可以按以下步骤操作可以按以下步骤操作: : 设置控件的特性设置控件的特性 l 设置控件的特性设置控件的特性, ,可以按以下步骤操作可以按以下步骤操作: : z 选中先前创建的复选框控件,如果没有马上创建一个. z 右击该控件,选择控制选项卡. z 在单元格链接中输入A1并确定. z 单击任意单元格,退出设置. z 用鼠标左键单击复选框,A1出现TRUE,这意味着该控

24、件被选中.再次单击 该控件,A1出现FALSE. z 选择刚才创建的滚动条控件.并调出设置控件格式对话框. z 在单元格链接中输入A3并确定. z 在滚动条外任意单元格单击鼠标左键,使滚动条不被选择. z 用鼠标单击滚动条上的箭头,则A1的数值增加1,继续单击则A1的数值继 续增加. z 保存并关闭该工作簿. 给控件命名给控件命名 使用用户窗体使用用户窗体 l 当创建一个控件时EXCEL会自动给它指定一个名字,但不便于理解和记忆,为控 件取名的方法基本和给单元格或区域取名的方法相同.选中某个控件,再在位 于公式栏上的“名字”编辑框输入控件名字.这样就给控件更改了名字 。 l 如果希望创建专业级

25、的应用程序,并且方便用户输入数据,那么应该使用用户 窗体.用户窗体可以作为程序的对话框和窗口.向用户窗体添加控件基本类似 于向工作表添加控件,然而第一步要创建一个用户窗体.这可以通过VBA编辑器 实现.具体按以下步骤操作: 1)打开HOUR3工作簿,选择工具-宏-VBA编辑器,打开VBA编辑器. 2) 在VBA编辑器中选择工具栏上的插入用户窗体按钮或者选择插入 菜单,从下拉菜单中选择用户窗体 现在,VBA编辑器中出现一个名为 USERFORM1的窗体,控件工具箱同时出现,在其中有许多已经熟悉的控 件,另外还有一些新的控件. 这些新的控件是: 使用用户窗体使用用户窗体 切换按钮切换按钮 该控件如

26、果被选中,那么会保持被按下的状态.如果再次单击它就恢复为没有 按下的状态.EXCEL工具栏中有几个这样的按钮, 例如:全屏显示,加粗,下划线以及窗体工具栏中的切换网格等. 选项卡条选项卡条(TabStrip)(TabStrip) 它是包含多个选项卡的控件.通常用来对相关的信息进行组织或分类. 例如:你也许希望用选项卡条来显示各个地区的销售信息,可以给每个地区设置 一个选项卡.在默认时,选项卡包含两页,分别叫做TAB1和TAB2,可以添加更多 的选项卡. 多页多页 外观类似选项卡条,是包含一页或多页的控件.选项卡条给人相似的外观, 而多页控件的各页包含各自不同的控件,有各自不同的布局.多页的例子

27、很多, 例如:设置控件格式对话框和工具菜单中的选项对话框. 以及格式“菜单中的单元格.对话框. 使用用户窗体使用用户窗体 图像控件图像控件 它允它允许许向窗体上放置向窗体上放置图图片片.图图片格式片格式须为须为: *.bmp,*.cur,*.gif,*.ico,*.jpg,*.wmf. RefEdit 这是工具箱中默认情况下的最后一个控件。它外观象文本框,这是工具箱中默认情况下的最后一个控件。它外观象文本框, 通过这个控件可以将用户窗体折叠起来,以便选择单元格区域。通过这个控件可以将用户窗体折叠起来,以便选择单元格区域。 在对用户窗体设计得满意时,可以对其进行预览,方法是在在对用户窗体设计得满

28、意时,可以对其进行预览,方法是在VBAVBA编辑器中编辑器中 选择该窗体,单击选择该窗体,单击“运行运行”菜单中的三角符号菜单中的三角符号“运行子过程运行子过程/ /用户窗体用户窗体”, 三角符号在三角符号在 VBAVBA工具栏上也可能看得到,旁边是一个垂直的等于符号,工具栏上也可能看得到,旁边是一个垂直的等于符号, 最右边是个小正方形符号,它们类似于录音机上的按钮。运行窗体的最右边是个小正方形符号,它们类似于录音机上的按钮。运行窗体的 另一个方法是按另一个方法是按F5F5键。键。 小结小结 代码存在的位置代码存在的位置 l VBAVBA代码必须存放在某个位置,这个地方就是模块。代码必须存放在

29、某个位置,这个地方就是模块。 l 有两种基本类型的模块:标准模块和类模块。有两种基本类型的模块:标准模块和类模块。 l 模块中的每个过程或者是函数过程,或者是子程序概念模块中的每个过程或者是函数过程,或者是子程序概念. . 新术语:新术语: l 你的大部分工作集中在标准模块中(简称为模块)当录制宏时如果不你的大部分工作集中在标准模块中(简称为模块)当录制宏时如果不 存在模块,存在模块,EXCELEXCEL自动创建一个。自动创建一个。EXCELEXCEL和和VBAVBA不关心代码存放在哪一不关心代码存放在哪一 个模块中,只要代码存在于打开的工作簿中即个模块中,只要代码存在于打开的工作簿中即可。可

30、。 模块:它是作为一个单元保存在一起的模块:它是作为一个单元保存在一起的VBAVBA定义和过程的集合。定义和过程的集合。 类模块:类模块:VBAVBA允许你创建自己的对象,对象的定义包含在类模块中。允许你创建自己的对象,对象的定义包含在类模块中。 对模块的概览对模块的概览 SubcmdSmallFont_Click() WithSelection.Font .Name=Arial .FontStyle=Regular .Size=16 EndWith Endsub 过程被定义为过程被定义为VBAVBA代码的一个单元,过程中包括一系列用于执行代码的一个单元,过程中包括一系列用于执行 某个任务或是

31、进行某种计算的语句。某个任务或是进行某种计算的语句。 上面列出的过程实际上是一个 事件过程。这个过程的名字是 由一个按钮对象的名字 CmdSmallFont和一个事件的 名字Click组成的,两者之间 用下划线分开。 当单击这个命令按钮时, 就会运行这个事件过程。 函数过程通常情况下称为函数,要返回一个数值。这个数值通常是计算的 结果或是测试的结果,例如False 或True.正如前面所说,可以用VBA创建 自定义函数。实际上可以在工作表上使用你创建的函数。 程序清单4-2是一个计算价格的10%为运费的简单例子。 简单的用户定义函数示例。 Public Function Shipping(Pr

32、ice) Shipping = Price * 0.1 End Function 这个函数使用一个参数 (Price).子程序和函数 都可以使用参数。Price 可以是数字和单元格引用。 创建过程创建过程 创建第一个过程需要两个基本步骤。 首先,需要向工作簿中添加一个模块。接着需要向模块中添加一个工程。 对于创建的每一个应用程序,只需添加一次模块。可以使用多个模块,但这是 不必要的。某些开发者喜欢使用多个模块,以便根据他们的目的或者窗体对过 程进行组织。在本练习中,创建的过程只显示一个消息框。 在本练习中创建 的过程只显示一个消息框。在本练习中使用Msgbox是为了提供一个可见的例 子,虽然我

33、们还没有介绍过Msgbox语句,但是在本例中将使用它。要创建该 过程,请按如下步骤进行: 打开一个新工作簿。 选择工具-宏-Visual Basic编辑器,打开VBA编辑器窗口。 在VBA编辑器的左面,可以看到“工程资源管理器”窗口。 在工程资源管理器窗口的“Thisworkbook上单击鼠标右键, 选择“插入”-“模块”,这样就将一个模块添加到应用程序中了。 (如果你没有看见“工程资源管理器”窗口,可以按 Ctrl+R)。 选择“插入”“过程”,显示“添加过程”对话框。 输入“第一个工程”作为过程名字。 在“类型”分组框中,确认选择了“子程序”。单击“确定”按钮。 这样一个新的过程就添加到模

34、块中了。可以在模块中看到以 Public Sub 第一个过程()开始,以End Sub结束的语句结构。 6)在过程中插入光标,输入以下语句并回车: Msgbox 这是我的第一个过程 在输入在输入MsgboxMsgbox后,会自动弹出一个消息框告诉你有关这条命令的信息,后,会自动弹出一个消息框告诉你有关这条命令的信息, 称之为自动列表技术。输入完成的过程如下所示:称之为自动列表技术。输入完成的过程如下所示: Public Sub 第一个过程() Msgbox 这是我的第一个过程 End Sub VBAVBA对子程序和函数对子程序和函数有有 如下的命名规则:如下的命名规则: * * 名字中可以包含

35、字母名字中可以包含字母 数字和下划线。数字和下划线。 * * 名字中不能包含空格名字中不能包含空格 句号惊叹号,也不能包句号惊叹号,也不能包 含字符含字符 & $ #. & $ #. * * 名字最多可以包含名字最多可以包含 255255个字符。个字符。 运运行宏行宏 l 创建这个过程后,可以运行一下。 l 运行一个过程有几种方法: l 可以直接使用“运行”菜单,“运行子程序/用户窗体”工具栏按钮 或按下F5键。 l 要运行一个过程,可以按照如下步骤: l 1)单击“运行子程序/用户窗体”工具栏按钮,过程执行并显示一个 消息框。 2)单击消息框之中的“确定”按钮,关闭该消息框。 保存对模块所做

36、的改变保存对模块所做的改变 要保存新过程要保存新过程, ,需要保存过程所驻留的工作簿需要保存过程所驻留的工作簿. .可以用可以用 VBAVBA编辑器保存工作簿编辑器保存工作簿. .具体步骤如下具体步骤如下: 选择选择 文件文件-保存工作簿保存工作簿.因为本工作簿还没有保存过因为本工作簿还没有保存过, , 所以要给它命名所以要给它命名. . 输入输入“HOUR4”“HOUR4”作为文件名并按回车键作为文件名并按回车键, ,则工作簿和模块与则工作簿和模块与 过程都保存下来了过程都保存下来了. . 变量变量 l 变量是用于临时保存数值的地方. l 每次应用程序运行时,变量可能包含不同的数值,而在程序

37、运行时,变 量的数值可以改变. l 为了说明为什么需要变量,可以按照如下步骤创建一个简单的过程: l 1)创建一个名为你叫什么名字的过程. 2)在过程中输入如下代码: Inputbox 输入你的名字: l 3)按下F5键运行过程,这时会显示一个输入框,要求输入你的名字. 4)输入你的名字并按确定按钮,则结束该过程. 你输入的名字到那 里去了?如何找到用户在输入框中输入的信息?在这种情况下,需要使 用变量来存储用户输入的结果. 变量的数据类型变量的数据类型 使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存 何种类型的数据.表列出了VBA支持的数据类型,还列出了各种类型的变量所

38、需要 的存储空间和能够存储的数值范围. 数据类型数据类型存储空间存储空间数值范围数值范围 Byte1字节0 - 255 Boolean2字节True或者False Integer2字节-32768 - 32767 Long(长整型)4字节-2147483648 - 2147483647 Single4字节负值范围: -3.402823E38 -1.401298E-45 正值范围: 1.401298E-45 3.402823E38 Object4字节任何引用对象 String(长字符串)10字节+1字节/字符0 - 约20亿 变量的数据类型变量的数据类型 数据类型数据类型存储空间存储空间数值数值

39、范围范围 Double8字节负值范围: -1.79769313486232E308 - 494065645841247E-324 正值范围: 4.94065645841247E-324 1.79769313486232E308 Decimal14字不包括小数时: +/-79228162514264337593543950335 包括小数时: +/7.9228162514264337593543950335 Currency8字节-922337203685477 922337203685477 Date8字节1000年1月1日 - 9999年12月31日 String(固定长度)字符串的长度1

40、约65400 Varient(数字)16字节Double范围内的任何数值 Varient(文本)22字节+1字节/字符数据范围和变长字符串相同 用用DimDim语句创建变量语句创建变量( (声明变量声明变量) ) 现在,你对变量可以使用的数据类型已经比较熟悉了,以下我们将创建变量. 创建变量可以使用Dim语句,创建变量通常成为声明变量。 DimDim语句的基本语法如下语句的基本语法如下: : Dim变量名变量名AS数据类型数据类型 变量名必须以字母开始变量名必须以字母开始, ,并且只能包含字母数字和特定的特殊字符并且只能包含字母数字和特定的特殊字符, , 不能包含空格句号惊叹号不能包含空格句号

41、惊叹号, ,也不能包含字符也不能包含字符 & $ & $ #. #. 名字最大长度为名字最大长度为255255个字符个字符。 变量命名的惯例变量命名的惯例 下表给出了推荐的变量命名惯例 数据类型短前缀长前缀 数据类型数据类型短前缀短前缀长前缀长前缀 Arrayaary Booleanfbin Bytebbit Currencyccur Doubleddbl Date/Timedtdtm/ dat Integeriint Longllng Objectoobj Singlesng Stringsstr Variantvvar 使用数组使用数组 如果你使用过其他编程序语言如果你使用过其他编程序语言

42、, ,可能对数组已经比较熟悉了可能对数组已经比较熟悉了. .数组是具有数组是具有 相同数据类型并共同享有一个名字的一组变量的集合相同数据类型并共同享有一个名字的一组变量的集合. .数组中的元素通过数组中的元素通过 索引数字加以区分索引数字加以区分, ,定义数组的方法如下定义数组的方法如下: : Dim array_name(n) As type (其中n是 数组元素 的个数) 例如例如, ,如果要创建保存如果要创建保存1010个学生名字的数组个学生名字的数组, ,可以用以下语句可以用以下语句: : Dim s学生名字(9) As Integer 使用数组使用数组 声明数组时的另一种方法是不给定

43、大小。可以在程序运行时定义其大 小。通过创建动态数组就可以做到。例如,你的程序要创建一表格, 可以提示用户输入表格的行和列的数目。 声明动态数组的语法如下: Dim dyn_array() As type 对数组声明后可以在程序运行时用ReDim语句指定数组的大小: ReDim dyn_array()(array_size) 参数array_size代表数组的新大小。如果要保留数组的数值,请在 ReDim语句后使用保留字Preserve,具体语法如下: ReDim Preserve dyn_array(array_size) 变量赋值变量赋值 l 声明变量后就可以给变量赋值。请注意下列语句中为

44、数组变量赋值时 索引数字的使用。 Dim i人数 As Integer Dim i考试成绩 As Integer Dim i As Integer i人数 = inputbox(输入学生的人数:) ReDim Preserve i考试成绩(i数量) For i = 1 to i人数 i考试成绩(i) = inputbox(输入考试成绩& i ) Next 使用常量使用常量 l 现在,你已经知道变量是存储非静态信息的存储容器.当存储静态信息 时可以创建常量.它可以供程序多次使用而且便于记忆. l 比如圆周率比3.1415926好理解得多. 要声明常量并设置常量的值,需 要使用const语句.常量

45、声明后,不能对它赋一个新的值. l 例如,假设需要声明一个常量来保存销项税率,可以使用以下语句: l 通常常量声明时用全大写字母以区分变量. const 销项税率 As Long = 0.17 作用域作用域 到现在为止,已经学习了如何定义变量和常量,但是还不知道在何处定义.可以在两个地 方定义常量和变量: 过程中定义和在模块顶部一个名为“通用声明”的区域内定义. 定义的位置决定租用域定义的位置决定租用域. 在过程中声明,该变量只能在该过程中使用,其他过程中不能使用这个 变量和常量,这中变量成为局部变量或过程级变量; 在模块顶部声明的变量称为模块级变量,该变量在该模块的所有过程中 都可以使用。

46、作用域作用域 还有一种等级的作用域称为公共级。 公共级变量可以在应用程序的任何过程中使用,不论过程和变量是否定义在一个模块。 这就使得公共级变量在使用中十分灵活,但是公共级变量在程序运行时一直保留在 内存中,这样就占用了系统资源。要创建公共级变量,可以用Public语句, 具体语法如下: Public variablename As datatype 要创建公共级常量,具体语法如下: Public const CONSTANAME datatype = value 公共级变量或常量必须在模块顶部的公共级变量或常量必须在模块顶部的“通用声明通用声明”区域中定义。区域中定义。 利用利用VBA设置工

47、作表使用权限设置工作表使用权限 Excel Home 一般保护工作表采取的方法是用EXCEL菜单中的“保护”命令, 有时这尚嫌不足,比如一些机密文件根本要让某些使用者无法看到, 但又需要他来操作工作簿中的其他表,怎么办? 可以打开VBA编辑器,打开“工程资源管理器”,双击该工作表,现在出现的是 设置该表的属性的编辑窗口,单击窗口左上的下拉列表框,选择 worksheet , 这时再从该窗口右上方的列表框中选择Active(“激活”),这时自动显示 如下的语句块: Private Sub Worksheet_Activate() End Sub 利用利用VBA设置工作表使用权限设置工作表使用权限

48、 在其中加入代码:在其中加入代码:( (假设用假设用“123”“123”作为密码作为密码,Sheet“,Sheet“机密文档机密文档”为限制为限制 权限文档权限文档,sheet,sheet普通文档普通文档 为工作簿中你认为任何适合的工作表为工作簿中你认为任何适合的工作表) ) If Application.InputBox(请输入操作权限密码:) = 123 Then Range(A1).Select Else Msgbox 密码错误,即将退出! Sheets(普通文档).Select End if 利用利用VBA设置工作表使用权限设置工作表使用权限 l 完整的程序如下:完整的程序如下: Pr

49、ivate Sub Worksheet_Activate() If Application. InputBox(请输入操作权限密码:) = 123 Then Range(A1).Select Else MsgBox 密码错误,即将退出! Sheets(普通文档).Select End If End Sub 利用利用VBA设置工作表使用权限设置工作表使用权限 这样做仍有一个问题,就是越权使用者仍会看到一些文件的片段,即在提示这样做仍有一个问题,就是越权使用者仍会看到一些文件的片段,即在提示 密码的那段时间。你可以这样做,用上述方法选择工作表的密码的那段时间。你可以这样做,用上述方法选择工作表的D

50、eactivateDeactivate事件事件, , 输入以下代码:输入以下代码: Sheets(机密文档).Cells.Font.ColorIndex = 2 这段程序使得此工作表在不被激活时,所有文字为白色。这段程序使得此工作表在不被激活时,所有文字为白色。 然后,在第一个程序中的然后,在第一个程序中的Range(A1).SelectRange(A1).Select后插入一行,写入以下代码:后插入一行,写入以下代码: ActiveSheet.Cells.Font.ColorIndex = 56 这段程序,在你输入正确密码后,将该表所有文字转变为深灰色。这段程序,在你输入正确密码后,将该表所

51、有文字转变为深灰色。 利用利用VBA设置工作表使用权限设置工作表使用权限 完整的程序如下:完整的程序如下: Private Sub Worksheet_Activate() If Application.InputBox(请输入操作权限密码:) = 123 Then Range(A1).Select Sheets(机密文档).Cells.Font.ColorIndex = 56 Else MsgBox 密码错误,即将退出! Sheets(普通文档).Select End If 提高提高VBAVBA运行效率运行效率 由于Microsoft Office办公套件的广泛应用,以及该软件版本的不断提升

52、,功能 不断完善,在Office办公套件平台上开发出的VBA应用程序越来越多, 而VBA是一种宏语言,在运行速度上有很大的限制。 因此VBA编程的方法直接关系到VBA程序运行的效率,本文列举了一些提高VBA程序 运行效率的方法。 方法方法1 1:尽量使用:尽量使用VBAVBA原有的属性、方法和原有的属性、方法和WorksheetWorksheet函数函数 由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说 可能对它们不全部了解,这就产生了编程者经常编写与Excel对象的属性、方法相同 功能的VBA代码段,而这些代码段的运行效率显然与Excel对象的属性、方法完成 任务

53、的速度相差甚大。 提高提高VBAVBA运行效率运行效率 ForEachcInWorksheet(1).Range(A1:A1000) TotalValue=TotalValuec.Value Next AverageValue=TotalValue/Worksheet(1).Range (A1:A1000).Rows.Count 如求平均工资的例子:如求平均工资的例子: 例如用Range的属性 CurrentRegion来返回Range 对象,该对象代表当前区。 (当前区指以任意空白行及空白列的组合为边界的区域)。同样功能的VBA 代码需数十行。因此编程前应尽可能多地了解Excel对 象的属性

54、、方法。 充分利用Worksheet函数是提高程序运行速度的极度有效的方法。 提高提高VBAVBA运行效率运行效率 而下面代码程序比上面例子快得多:而下面代码程序比上面例子快得多: AverageValue=Application.WorksheetFunction.Average(Worksheets(1) .Range(A1:A1000) 其它函数如Count, Counta, Countif, Match, Lookup等等, 都能代替相同功能的VBA程序代码,提高程序的运行速度。 尤其在循环中每一个Excel对象的属性、方法的调用都需要通过OLE 接口的一个或多个调用,这些OLE调用都

55、是需要时间的,减少使用 对象引用能加快VBA代码的运行。 方法方法2:尽量减少使用对象引用:尽量减少使用对象引用 提高提高VBAVBA运行效率运行效率 例如例如 1 1使用使用WithWith语句。语句。 Workbooks(1).Sheets(1).Range(A1:A1000).Font.Name=Pay Workbooks(1).Sheets(1).Range(A1:A1000).Font.FontStyle=Bold . 则以下语句比上面的快则以下语句比上面的快 WithWorkbooks(1).Sheets(1).Range(A1:A1000).Font .Name=Pay .Fon

56、tStyle=Bold . EndWith 提高提高VBAVBA运行效率运行效率 2 2使用对象变量。使用对象变量。 如果你发现一个对象引用被多次使用,则你可以将此对象用如果你发现一个对象引用被多次使用,则你可以将此对象用SetSet 设置为设置为 对象变量,以减少对对象的访问。如:对象变量,以减少对对象的访问。如: Workbooks(1).Sheets(1).Range(A1).Value = 100 Workbooks(1).Sheets(1).Range(A2).Value = 200 则以下代码比上面的要快:则以下代码比上面的要快: Set MySheet = Workbooks(1).Sheets(1) MySheet.Range(A1).Value = 100 MySheet.Range(A2).Value = 200 提高提高VBAVBA运行效率运行效率 3 3在循环中要尽量减少对象的访问。在循环中要尽量减少对象的访问。 For k = 1 To 1000 Sheets(Sheet1).Select Cells(k,1).Val

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论