《2022年VBA语言学习 .pdf》由会员分享,可在线阅读,更多相关《2022年VBA语言学习 .pdf(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、网友学 VBA (1)- 写在前面的话各位爱好钻研 Office 技术的网友,你们好!从今天开始,我将在我的博客中增加一个新的文章类别,即“ 和网友一起学VBA(Visual Basic for Application )” ,简称“ 网友学 VBA” 。我将把它作为一个专门系列,与我博客中的文学系列和税务系列并存,长期地写下去, 同网友们一起交流学习心得, 分享学习经验,共同提高VBA 编程水平。在实践中,VBA 在 Excel 当中应用得最为广泛, 也最有价值,能够高效、灵活地扩展 Excel 的功能,为处理大批量的、复杂的数据带来方便。因此,我们的讨论将以Excel VBA 为主要内容,
2、兼顾其他Office 组件。我个人认为,修炼 Excel 高手有三个层次。 第一层是能够熟练地制作电子表格,并运用一些常用的、简单的公式进行计算;第二层是能够成功地运用一些高级函数以及Excel 自身的高级功能分析数据,进行一些较为复杂的数据处理工作;第三层就是利用VBA 技术扩展 Excel 的功能,对 Excel 进行二次开发,让它按照我们的意愿去处理相应的工作。通过学习和使用VBA 技术,我们会看到Excel 的另一片天地, 这也是我们之所以要努力修炼到第三层的目的:我们要随心所欲地让Excel 老老实实地为我们工作。需要说明的是, 我不是在写教科书, 所以今后我们交流的内容, 将不会以
3、各种概念为主,而会以实例和操作为主, 而且介绍的实例也以能解决我们的实际问题为主。在学习过程中, 我将参考一些专业书籍,选用一些网络上流行的代码,在此就不一一注明原出处。 对其中可能引用的部分经典代码,在此先向原编写者致谢。好了,从现在开始 ,让我们携手共同走进Office VBA 的神奇世界。网友学 VBA (2)- 什么是 VBA 我第一次亲密接触VBA 时,还在做一种叫 “ 税收会计 ” 的工作。在使用 Excel 办公时,我对一次又一次的重复任务感到厌倦,就想找到一种能够自动重复任务的办法。很快,我在Excel 中发现了 “ 宏” ,发现它就是我要的东西,大喜!之后,我又发现了“VBA
4、 ” ,狂喜!说心里话,我其实不喜欢VBA ,所有与编程有关的东西我都不喜欢。但我喜欢VBA 能帮我实现高效办公,并且是在我没有编程基础的情况下。专家说:不用编写一行代码,就可以使用VBA 。这太好了!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 35 页 - - - - - - - - - 在学习和使用 VBA 之前,对有些概念的理解,我们是无法避免的,否则,就不会知道自己要做什么、如何做。咱们得明明白白地做事,你可不能嫌我烦。VBA 的全称是 Visual Basi
5、c for Application ,它是微软开发出来的、在其桌面应用程序中执行通用的自动化( OLE)任务的编程语言。我们可以用它来创建自定义的解决方案。所谓应用程序自动化,是指通过编写程序让常规应用程序(如Excel、Word、Access等)自动完成工作。VBA 本来是 Office 中包含的一种用来扩展Office 功能的 Basic 语言,最早出现在 Office97 中,而且 Excel 是最早支持 VBA 的组件。VBA 可以在 Office 各组件中通用。当你学会了在Excel 中使用 VBA ,就已经具备了在其他Office组件中使用 VBA 的基本知识。另外, AutoCA
6、D,CorelDRAW 等应用程序的新版本中也集成了VBA 。也许有的朋友会问, Excel 不是本来就有自动功能吗?如自动求和、自动套用格式、排序、筛选、数据透视等等。但你说的都是一些单步性的工作,是狭义的自动化。而使用VBA ,我们可以只发出一个指令(如单击一个按钮),就可以让Excel 乖乖地替我们完成剩下的工作:将一个文件中的数据逐条录入到一个工作表中排序删除重复的数据 进行求和计算 画上表格边框 进行页面设置打印输出 一系列的工作,很可能就在一瞬间完成!酷吧!难怪有人说,VBA 是 Excel 的“ 遥控器” 。酷是酷,但有两点我得忠告大家:第一点,虽然VBA 上手很容易,但也不至于
7、容易到像我们给mm 写情书一样随手就来,想成为高手,还须多年磨练啊!(呵呵,写一封让 mm 动心的情书亦非易事啊!)第二点,我们也不要到处去用VBA ,因为一些简单的工作或一次性的工作,还不如手工去完成它,否则,你的代码还没有写完, 人家的工作早已完成了, 并翘着腿坐在你旁边喝着咖啡鄙视着你呢。所以, VBA 还是应用在那些比较复杂、重复性的、劳动量大的工作上,所谓“ 好钢用在刀刃上 ”嘛。网友学 VBA (3)- 在 Excel 中实现金额数字中文大写在继续深入学习 VBA 理论之前,我们先来看一个VBA 实例。我们要解决的问题是:在Excel 中实现人民币金额中文大写这一功能,即在一个单元
8、格中输入小写金额数字,而在另一个单元格自动显示中文大写金额。那么 Excel 有没有提供这种功能呢?先看看再说吧。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 35 页 - - - - - - - - - 打开 Excel 工作簿,在工作表的 A1 单元格输入数字100815.96 ,在工作表的 B1 单元格中输入公式“=A1”,右击 B1 单元格,在弹出菜单中点 “ 设置单元格格式 ” ,在出现的对话窗口中点选“ 数字” 标签,在分类列表中选择 “ 特殊/中文大写数字
9、 ” ,这时单元格 B1 中显示的结果为 “ 壹拾万零捌佰壹拾伍 .玖陆” 。(图 1)看来, Excel 中是有中文大写功能的,只是没有显示“ 元、角、分、整 ” 的功能,不能解决中文金额大写的问题。微软也真是的,做事留一手,这不是明摆着欺负咱们中国人吗?(图 1) 那么,我们只能自己解决问题了。有两种方法可行:一是使用IF 函数。这种方法需要使用IF 函数多层嵌套才能实现,但是自己看着都晕,容易出错,使用和维护不便,所以我就不作推荐了。另一种方法就是自定义函数,这是我要向大家着重介绍的。先给这个自定义函数取个名儿,它的中文名叫“ 大写金额 ” ,英文名叫 “dxje()”。呵呵,跟小沈阳学
10、的。编写函数的代码如下:Function dxje(q) ybb = Round(q * 100) 将输入的数值扩大100 倍,进行四舍五入Y = Int(ybb / 100) 截取出整数部分名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 35 页 - - - - - - - - - j = Int(ybb / 10) - Y * 10 截取出十分位f = ybb - Y * 100 - j * 10 截取出百分位 zy = Application.WorksheetFu
11、nction.Text(Y, DBNum2$-804General) 将整数部分转为中文大写zj = Application.WorksheetFunction.Text(j, DBNum2$-804General) 将十分位转为中文大写zf = Application.WorksheetFunction.Text(f, DBNum2$-804General) 将百分位转为中文大写dxje = zy & 元 & 整 d1 = zy & 元 If f 0 And j 0 Then dxje = d1 & zj & 角 & zf & 分 If Y = 0 Then dxje = zj & 角 &
12、zf & 分 End If End If If f = 0 And j 0 Then dxje = d1 & zj & 角 & 整 If Y = 0 Then dxje = zj & 角 & 整 End If End If If f 0 And j = 0 Then dxje = d1 & zj & zf & 分 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 35 页 - - - - - - - - - If Y = 0 Then dxje = zf & 分 End I
13、f End If If q = Then dxje = 0 如没有输入任何数值为0 End If End Function 什么?你看不懂!不要紧,以后会懂的,现在只要跟着做就行了。第一步,复制上面的代码。(意外情况告知 :有时候在网页上复制的代码可能含有一些网页特有格式,所以最好先将代码复制到记事本中过滤一下,去掉网页格式, 再从记事本中复制干净的代码进行粘贴操作。这我以后就不一一说了。当然,这里应当不存在这个问题。)第二步,打开创建宏的对话窗口。Excel 2007中是在 “ 开发工具 /宏” 菜单下, Excel 2003是在“ 工具/宏/宏” 菜单下。在 “ 宏名 ” 中输入 “dxj
14、e ”。(图 2)(图 2) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 35 页 - - - - - - - - - 第三步,在 “ 宏” 对话窗口中,单击 “ 创建” 按钮,会打开 Visual Basic 编辑器( VBE),先将代码窗口中系统自动生成的两行代码清除,再将我们先前复制好的自定义函数代码粘贴上去(图3),然后点 VBE 菜单“ 文件/关闭并返回到 Microsoft Excel”,返回到刚才的工作表中来。(图 3) 当然, Excel2003 中我
15、们也可以通过 “ 工具/宏/Visual Basic 编辑器 /插入/模块” ,打开上面的代码窗口。Excel2007我就不赘述了。第四步,在单元格B1 中输入 “=dxje(A1) ”,即能正确显示中文大写金额数字,大功告成!(图 4)小提示:(1) 在“ 宏安全性 ” 中要设置为 “ 启用所有宏 ”(或将宏安全级设为低 ),否则代码不能运行。 Excel2007中从菜单 “ 开发工具 /宏安全性 ” 进入设置, Excel2003 中从从菜单 “ 工具/宏/安全性 ” 进入设置。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
16、 名师精心整理 - - - - - - - 第 6 页,共 35 页 - - - - - - - - - (2)如果你使用的是 Excel2007,而不是 Excel2003,那么在保存文件时要选择 “ 启用宏的工作薄 ” 。我觉得,由于目前 Excel2003 在实践中仍占主导地位, 所以建议您保存为 “Excel97 -2003 工作薄 ” 类型,即文件扩展名只有3 位的“.xls ”的 Excel 文件,以免引起兼容方面的麻烦。(3)如果你想在大写金额前面加上“ 人民币 ” 三个字,可以这样输入公式:=人民币 &dxje(A1) 。注意引号必须在英文状态下输入。网友学 VBA (4)-
17、VBA、VB 、VBS的关系在前面介绍的 “ 中文金额大写 ” 的实例中,自定义函数dxje()的代码就是用 VBA 语言编写的。当然啰,你要说是用 VB 语言编写的,我也不反对,因为VB 和 VBA 的编程语句并没有多大区别,它们的关系十分密切。你学会了VB,很可能就学会了VBA 。比较的正统的说法是, VBA 是 VB(Visual Basic)的一个子集, VBA 不同于 VB,原因是 VBA 要求有一个宿主应用程序(如:Word、Excel 等)才能运行,而且不能用于创建独立的应用程序;而VB 可用于创建独立的应用程序。不过,只要你愿意,你还是可以把应用程序作为一个平台,然后使用 VB
18、A 技术创建一个自己的、独特的应用程序。比方说,你完全可以用Excel+VBA 开发一套小型财务处理系统。有人将 VBA 、VB 的区别总结为点:1. VB 是设计用于创建标准的应用程序,而VBA 是使已有的应用程序 (Excel 等)自动化。2. VB 具有自己的开发环境,而VBA 必须寄生于已有的应用程序。3. 要运行 VB 开发的应用程序,用户不必安装VB。因为 VB 开发出的应用程序是可执行文件(*.EXE) ,而 VBA 开发的程序必须依赖于它的“ 父” 应用程序,例如 Excel。. VBA 实际上是脚本语言,可以解释执行;VB 则需编译才能执行。他的总结还是很有道理的。但是第4
19、点,很多专业书上都没有提到,我们暂且作为“ 参考意见 ” 对待。的确,实践中,我们只要将VBA 的程序代码修改一下,马上就可以运行出不同的结果,就像修改网页的 html 源代码一样简单。就象历史有 “ 正史” 和“ 野史” 之分一样,关于VBA 和 VB 的关系,也有很多 “ 民间传说 ” 。有人说, VB 是老子, VBA 是儿子。问题是,儿子终究是要长大并独立行事的。而VBA 始终是寄生在别的应用程序上,好像永远长不大。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共
20、35 页 - - - - - - - - - 也有人说, VBA 是个“ 装修小分队 ” ,被 VB 这个“ 装修公司 ” 派到 Excel、Word 等客户家中去搞装修。问题是,这个 “ 装修小分队 ” 被派出后再也不回来跟公司结账,成了人家的人了,根本不听VB 指挥。在此之外,还有一个叫VBS 的东东,即 VBScript,它是 Visual Basic Script 的简称。VBScript 是微软开发的一种脚本语言,可以看作是VB 语言的简化版,与VBA 的关系也非常密切。它具有原语言容易学习的特性, 并继承了 JavaScript的跨平台的特性。 目前这种语言广泛应用于网页和ASP
21、程序制作,同时还可以直接作为一个可执行程序。VBScript 可以被用来自动地完成重复性的Windows 操作系统任务,而网页中的VBS 可以用来指挥客户方的网页浏览器(浏览器执行VBS 程序)。有一个网友这样评价VB、VBS、VBA 三者之间的关系:VB 和 VBA 本就是同宗的姐妹,只不过姐姐VB 的功夫要比妹妹 VBA 历害些。不过姐姐只会单打独斗是女强人;妹妹却只会傍大款(例如Office)。姐姐有生育能力,是真正的女人;妹妹却不会生崽(生成 .EXE),但深谙相夫之道,一番教导指挥之下可使她老公增色不少。而VBS 呢,也是大户人家的女儿,不过没有VB 和 VBA 姐妹优秀的血统,娇小
22、玲珑干不得粗活,只能指挥些自动听话的对象来干活( ActiveX Script),她乐于助人、品德好,不象VBA 那样只认大款。呵呵,这真是天才的比喻,我真是服了他!不管怎么说,我们至少应该知道两点:一、VBA 是 Office 中包含的用来扩展Office 功能的 Basic 语言。(注:Basic 语言是高级程序设计语言的一种,简单易学,英文全名是 “Beginner s All-Purpose Symbolic Instruction Code”, 中文意思是 “ 适用于初学者的多功能符号指令代码” 。)二、VB 是在早期的 Basic语言基础上发展而来的,保持了原来Basic 语言简单
23、易学的特点,同时增加了结构化和可视化程序设计语言的功能。网友学 VBA (5)- Visual Basic简介既然 VBA 是 VB 的子集,那么就有必要先对VB 进行一点了解。目前就VBA 学习需要而言,我们主要应当了解和学习VB6.0。VB 即 Visual Basic,它诞生于 1991年,是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 35 页 - - - - - - - - - 在 VB 环境下
24、,利用事件驱动的编程机制、新颖易用的可视化编程工具,使用Windows 内部的应用程序接口(API) 函数,以及动态链接库(DLL ) 、 动态数据交换(DDE) 、 对象的链接与嵌入 (OLE) 、开放式数据库链接( ODBC)等技术,可以高效、快速地开发出Windows 环境下功能强大、图形界面丰富的应用软件系统。VB 简单易学、效率高、且功能强大,受到广大程序员的青睐。总的看来,它主要有五大特点:1.可视化编程环境VB 提供了可视化设计工具,隐藏了Windows 程序界面设计的复杂性。这也是当前绝大多数高级程序设计语言的发展趋势。 一般情况下, 开发人员不必为界面设计而编写复杂烦琐的代码
25、,可用系统提供的工具,在屏幕上画出程序运行界面(由窗口、按钮、文本框等等各种控件组合而成),VB 将自动产生界面设计代码。 程序员的主要精力便是编写实现程序功能的那部分代码,从而大大提高了应用程序的开发效率。2.面向对象的程序设计VB 支持面向对象的程序设计方法。面向对象的程序设计认为, 现实世界是由一组彼此相关并互通信息的实体 对象( Object)组成的,如电话机、 PC机、房子等都可看作对象。编程过程中,我们可以建立 “ 学生” 这样一个对象, 它有姓名、 性别、年龄、所属班级 等数据(属性),也有上课、自习、实验、休息等行为(方法)。VB 应用面向对象的程序设计方法(OOP),把程序和
26、数据封装起来作为一对象,并为每个对象赋予应有的属性,使对象成为实在的东西。每个对象以图形方式显示在界面上,都是可视的。3.结构化程序设计语言VB 具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式,语句简单易懂。VB 是解释型语言,在输入代码的同时, 解释系统将高级语言分解翻译成计算机可以识别的机器指令,并判断每个语句的语法错误。在设计过程中,随时可以运行、调试程序,工程完工后,可以编译生成可执行文件( .EXE),并脱离 Visual Basic 环境,直接在 Windows 环境下运行。4.事件驱动编程机制在 Basic程序设计时,程序代码就像工厂车间流水线一样,有自己的执
27、行顺序,一般情况下,有一个明显的开头和结尾。 但使用事件驱动编程, 没有给代码运行指定一条确定的路径。程序代码根据不同的事件调用不同的子过程,这些过程分别面向不同的对象。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 35 页 - - - - - - - - - VB 通过事件来执行对象的操作。 一个对象可能会产生多个事件,每个事件都可以通过一段程序来响应。如:命令按钮是一个对象,单击按钮,会产生“ 单击” (Click) 事件,而在产生该事件时将执行一段程序,用来实现指
28、定操作。5.访问数据库利用数据控件和数据管理窗口,VB 可以直接建立或处理Microsoft Access 数据库,能直接编辑和访问 Btrive、dBASE、FoxPro、Paradox等外部数据库。 VB 提供 ODBC(Open DataBase Connectivity ,开放式数据库连接) 功能,可通过直接访问或建立连接的方式,使用并操作后台大型网络数据库,如SQL Server、Oracle、Sybase等。在应用程序中,可以使用结构化查询语言(SQL)数据标准,直接访问 Server上的数据库。Visual Basic 6.0 是 Visual Studio 6.0 套装软件中的
29、一个成员,它是专门为Microsoft 的 32 位操作系统设计的,可用来建立32 位的应用程序。 VB6.0 包括 3 种版本,分别为学习版、专业版和企业版。对大多数用户来说,专业版完全可以满足需要。关于 VB 的发展前景,有专家说,BASIC 是微软的起家产品,微软当然忘不了这位“ 功臣” 。随着每一次微软技术革新的浪潮,Visual Basic 都会随之获得新生。可以预见,将来无论微软又发明了什么技术或平台, Visual Basic 一定会首先以新的姿态登上去的。(主要参考资料: 刘炳文全国计算机等级考试二级教程 Visual Basic 语言程序设计(修订版) )网友学 VBA (6
30、)- 什么是对象我们说 Visual Basic是面向对象的程序设计,那么什么是对象呢 ?这个概念对我们今后学习VBA 非常重要,因为我们会面临大量与对象有关的东西。生活中的对象是指行动或思考时作为目标的人或事物。一台电视机,就是一个对象;我们所要交往的人,也是一个对象。对象无处不在,我们的工作和生活就是和不同的对象打交道。但在程序设计中的对象却是一个不太好理解的概念。比如,在早期的一些参考书中说, 对象是研究中的一个实例,包括了数据和过程。或者说,对象是类的一个实例,通常通过调用类的一个构造函数来创建它。这样的概念,对我们这些初学者来说,往往不知所云, 因为我们缺少从感性认识到理性认识的过程
31、。在一些教程中说,对象是指人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物, 还能表示抽象的规则、 计划或事件。对象是具有特殊属性 (数据)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 35 页 - - - - - - - - - 和行为方式(方法)的实体。建立一个对象后,操作通过与该对象有关的属性、事件和方法来描述。如现实生活中的实体对象 电视机,它有亮度、对比度、色彩饱和度、制式、音量、频道等属性;有增减亮度、调节对比度、
32、改变色彩饱和度、选择制式、切换频道、改变音量等操作。电视机的属性值表示了电视机所处的状态,而状态只能通过对电视机的属性值的操作来改变。在 VBA 中,对象是指一组属性及这组属上的专用操作的封装体。属性可以是一些数据,也可以是另一个对象。例如, Excel 工作簿为一个对象,它的属性值有工作簿名称、保存位置、作者及工作表等;而工作表又可以是一个对象,有自己的属性。 每个对象都有自己的属性值来表示自己的状态。对象中的属性值只能通过该对象所提供的操作来存取和修改。操作也称为方法或服务, 它规定了对象的行为,表示对象所能提供的服务。 一个对象通常可由对象名、 属性和操作三部分组成。 对象还有事件。当对
33、象的某方面有变动时就触发了事件。 例如, 收音机可能有 “VolumeChange ” 事件。 电话可能有 “Ring”事件,等等。对象是 Visual Basic 程序设计的核心。窗体和控件都是对象。数据库也是对象。到处都有对象存在。在 VB6.0 中,对象分为两类,一类是由系统设计好的,称为预定义对象,可以直接使用或对其进行操作,如窗体和控件;另一类是由用户自己定义的对象。VB6.0 工具箱中的控件实际上是 “ 空对象” 。用这些空对象可以在窗体上建立真正的对象(实体),然后就可以用鼠标调整这些对象的位置和大小。扩展阅读: 1.对象从何而来呢?Visual Basic 中的每个对象都是用类
34、定义的。用饼干模子和饼干之间的关系作比,就会明白对象和它的类之间的关系。饼干模子是类。它确定了每块饼干的特征,比如大小和形状。用类创建对象。对象就是饼干。在 Visual Basic 的“工具箱”上,控件代表类。直到在窗体上画出这些被称作控件的对象为止,它们实际上并不存在。在创建控件之时也就是在复制控件类,或建立控件类的实例。这个类实例就是应用程序中引用的对象。2.Visual Basic 对象支持属性、方法和事件。在 Visual Basic 中,称对象的数据(设置和属性)为属性,称各种可在对象上操作的过程为方法。事件是可被对象识别的动作,例如单击鼠标和按下键盘键,还可编写代码来响应事件。
35、3.每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。网友学 VBA (7)- 熟悉 VBE开发环境名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 35 页 - - - - - - - - - 我们知道了什么是 “ 对象” 后,可能就有强烈的欲望想进一步了解“ 对象属性 ” 、“ 对象事件 ” 、“ 对象方法” 、“ 面向对象程序设计 ” 等概念,并且迫切想弄清VB6.0 是不是真正的面向对象
36、的编程语言。可是我觉得,在对 VBA 还缺乏必要的感性认识前,去谈这些问题基本上是空谈,因为我们的大脑中还没有相关的 “ 模型” 来支持相关的思维活动。所以我们不妨先对VBA 来一点感性认识,在以后再深入了解这些概念。我们先来熟悉一下VBE 开发环境。VBE 即 Visual Basic 编辑器 ,英文名是 Visual Basic Editor,它与 Visual Basic 中的代码编辑器是一样的,熟悉 VB 的用户不需要学习就会使用它。微软声称 VBE 是一个集成开发环境,Microsoft Office 系列中的应用程序都拥有这一共同的开发环境,你可以将 Excel 中得到的有关 VB
37、A 知识,应用于 Word、Access等应用程序中。在 Office 组件中(如 Word、 Excel)开发应用程序时, 有关的 VBA 的操作都必须在 VBE 中进行。VBE 是一个单独的应用程序, 拥有独立的操作窗口, 但运行 VBE,必须先打开 Excel、Word 等 Office组件。下面以 Excel 为例,认识一下 VBE 的界面。1.启动 VBEExcel2003中,点击菜单 “ 工具/宏/Visual basic 编辑器 ” 启动 VBE(图 1)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
38、理 - - - - - - - 第 12 页,共 35 页 - - - - - - - - - Excel2007中,点击菜单 “ 开发工具 /Visual basic”启动 VBE(图 2)。我们还可以先录制一个宏 ,然后在 “ 编辑” 宏时打开 Visual basic 编辑器;或者命名一个宏 ,然后在“ 创建 ” 宏时打开 Visual basic 编辑器。2.界面组件简介VBE 启动后,展现在我们面前的是一个集成开发环境,采用的是Windows MDI( 多文档界面 )方式,集成环境中的每个窗口都可以在屏幕上移动、缩小、放大或关闭。启动后VBE 界面如下图:名师资料总结 - - -精品
39、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 35 页 - - - - - - - - - 上面的图片中,由于金谷山鹰对VBE 窗口进行了适当调整,并增加了立即窗口、工具箱和用户窗体,因此网友看到的初始界面可能会有所不同。一般情况下, VBE 界面主要由以下几个部分组成:菜单栏包含了绝大多数命令,供用户选择执行。Visual Basic 有两种类型的菜单:一是 内建菜单, 出现在窗口顶端的菜单栏中,每个菜单名称都会有些相应的命令。如, “ 格式” 菜单包含用来格式化窗体的命令。某些命令具有子菜单
40、,而子菜单又包含一些命令;二是 快捷方式菜单, 是一个内含经常使用的命令的菜单,当在对象上单击鼠标右键或按 SHIFT+F10 时就会出现。工具栏默认情况下,标准工具栏显示在菜单栏下方,其他工具栏则被隐藏起来。可通过菜单“ 视图/工具栏/自定义 ” ,打开自定义对话框,在“ 工具栏” 选项卡中选择要显示的工具栏,也可点击“ 新建” 按钮,自建工具栏。工程资源管理器用来管理 VBA 工程项目, 显示工程的一个分层结构列表。VBE 将每个工作簿视作一个工程,在Excel 中打开的所有工作簿都集中在工程资源管理器中进行管理。除了工作簿中的工作表以外,还可以管理自定义窗体, 以及增加代码模块等。 工程
41、资源管理器只是一个浏览及管理工具。不能从工程资源管理器中来建立应用程序。打开工程资源管理器的快捷键为“Ctrl+R ”。属性窗口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 35 页 - - - - - - - - - 主要用来设置对象属性。属性窗口会依所选择的窗体、控件、类、工程或模块,来列出设计时属性。属性窗口左边显示属性名, 右边显示属性值, 属性值可以修改。属性窗口常常用于窗体中各对象属性的交互设计。打开属性窗口的快捷键为“F4”。代码窗口是开发程序编写代码的
42、地方。 每一个对象都有一个关联的代码窗口。在“ 工程资源管理器 ” 中双击对象,即可打开该对象的代码窗口。本地窗口可自动显示出所有在当前过程中的变量声明及变量值。立即窗口主要起程序的调试作用。用户窗体要创建自定义对话框, 必须创建用户窗体, 也就是程序运行或操作的界面,是应用程序最终面向用户的窗口,它对应于应用程序的运行结果。工具箱工具箱窗口由工具图标组成,这些图标是Visual Basic 应用程序的构件,称为图形对象或控件,每个控件由工具箱中的一个工具图标来表示。简言之, “ 工具箱 ” 标识不同的控件, 这些控件可以添加到窗体、框架或页面中。3. Visual Basic编辑器特性Vis
43、ual Basic 编辑器提供了可视化编程环境,可以快速地在工程中定位、编辑、运行代码。窗体设计器能够建立包含ActiveX 控件的自定义对话框。Visual Basic 编辑器包含有完整的调试工具,可单步执行代码、设置断点和监视点。Visual Basic 编辑器提供的开发环境存在于宿主应用程序外的多文档界面(MDI)窗口中,给程序开发带来了便利, 如:在一个窗口运行代码, 同时在另一个窗口中查看应用程序对代码的响应情况。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共
44、 35 页 - - - - - - - - - 网友学 VBA (8)- 牛刀小试 : 第一个 VBA程序 Hello World Hello World 是最经典、也是最简单的学习计算机编程语言的入门程序,很多编程语言教材把它作为引子,开篇第一章就会介绍它。 下面我们就以 Excel 2003为例来创建一个输出 “Hello World ”这句话的程序 ,步骤如下:1.打开一个 Excel 2003工作簿。2.在“ 视图” 菜单上,选择子菜单 “ 工具栏 ” ,然后选择 “ 控件工具箱 ” 命令, “ 控件工具箱 ” 对话框就会浮现在当前工作表上。3.单击“ 控件工具箱 ” 中的命令按钮,工
45、作表中就会出现一个“ 命令按钮 ” ,初始标签为CommandButton1,你可在属性窗口中更改Caption 属性,来改变标签上显示的文字。该按钮目前处于设计状态, 可以移动, 可以改变大小。 控件工具箱上的三角尺状图标处于按下状态时,表示当前处于设计模式,反之,则处于运行模式。4.双击刚才画出的这个 “ 命令按钮 ” ,进入 Visual Basic 编辑器 , 在代码窗口当前光标处, 也就是系统自动生成的两行代码的中间一行,输入下面这行代码(注意引号为英文输入法状态下的引号):名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
46、- 名师精心整理 - - - - - - - 第 16 页,共 35 页 - - - - - - - - - MsgBox Hello World5.关闭 Visual Basic 编辑器,返回到 Excel 2003 界面。6.单击“ 控件工具箱 ” 中“ 退出设计模式 ” 按钮(三角尺状图标),退出设计模式,进入运行模式。7.单击我们在工作表上画出的命令按钮,程序会在后台运行我们刚才输入的代码,并弹出一个提示对话框,上面显示 “Hello World !” 这一信息。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
47、理 - - - - - - - 第 17 页,共 35 页 - - - - - - - - - 8.恭喜一下自己吧,我们顺利完成了第一个VBA 程序。麻雀虽小,五脏俱全。这的确是一个完整的小程序,你可能惊讶于它的简单,但VBA 程序设计决不会就是这么简单,我们还需要学习很多东西。扩展阅读作为所有编程语言的起始阶段,Hello World 占据着无法替代的地位,算是经典之中的经典了。大多数中、 英、法、德、美 版本的编程教材中,Hello World 总是作为第一个测试程序记录于书本之中,用“ 你好,世界! ” 这句亲切的话来引导你走入编程世界,直接引入程序最基本的输出语句!开门见山!这个例程是
48、从Kernighan & Ritchie 合著的 The C Programme Language开始有的,因为它的简洁、实用,并包含了一个程序所应具有的一切,因此为后来的这类书的作者提供了范例,一直持续至今。网友学 VBA (9)- 管理工程资源我们使用工程资源管理器来管理工程资源。工程资源管理器工作起来很象Windows 资源管理器,通过使用相相似的方法,我们可以选择或激活任何活动项目中的元素,可以方便地查看各对象的代码,还可以插入文件、导入导出文件。如图所示,工程资源管理器是一个多层树形列表。我们单击“+”号,将展开相应层级的工程资源,单击“ -” 号,将折叠相应层级的工程资源。如果对工
49、程资源采取了密码保护措施,则在展开工程资源名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 35 页 - - - - - - - - - 前,需要输入密码。一个Excel VBA 工程中中可以包括以下对象:工作表(图表)、模块、类模块、窗体、引用。在工程资源管理器顶部有 “ 查看代码 ” 、“ 查看对象 ” 和“ 切换文件夹 ” 三个按钮:“ 查看代码 ”为当前选定的对象显示或激活“ 代码窗口 ” 窗口,如选择了一个工作表或模块,则会显示与该工作表或模块有关的代码;“ 查
50、看对象 ”显示或激活所选项目,如在树形列表中选择了窗体UserForm1,则会在右侧窗体设计窗口中显示先前设计的该窗体,并在屏幕上显示窗体工具栏;单击“ 切换文件夹 ” 按钮可以在查看文件夹与查看文件夹内容之间做切换,也就是说,我们可以在树形列表中省略文件夹的层级,只显示最终的那些工程对象。工程资源管理器为用户提供了两种选择和编辑对象的方法:一是双击所要选择的对象。二是在工程资源管理器的某个对象上单击右键,会弹出快捷菜单,选择“ 查看代码 ” 或“ 查看对象 ”命令。右键菜单命令很丰富,针对性强,可以方便地管理工程资源。以 Excel VBA 为例,在工程资源管理器的文件夹中引入了3 种不同的