Excel与VBA程序设计标题:Excel与VBA程序设计版本:mini作者:马维峰Email:mweifeng@gmail.comBlog:时间:2005-6-20-2006-3-31序IExcel与VBA程序设计Copyright©2005马维峰序笔者大概从98年开始学习VB,从喜欢到失望,从失望到欣喜,从欣喜到平淡,大概是很多自己一样的程序员的学习心路。而对于Office的强大功能,对于VBA,领会的却很晚。例如Excel,虽然也一直知道其功能很强大,但到底如何强大,有什么有别于其他同类软件的特色,却不甚清楚。大概在2003年,应工作需要,仔细查阅了一些Excel的资料,开始学习Excel数据处理和VBA开发。因为当时已是一个熟练的VB程序员,所以VBA语法并不是难点和重点,而在很多书中没有很清楚讲解的问题,例如一个工作表内的某些数据如何获得,某个或某几个单元格的值怎么高效的获取和赋值,如何打开关闭Excel文件,如何正确部署最后的程序,如何绘制复杂的图表,等等诸如此类的问题,反而经常会困惑自己很久。因此,本书将以笔者的学习经验为依据,以一个程序员的角度,讲解ExcelVBA开发的种种问题,并对一些笔者在实际中遇到的大多数ExcelVBA开发的书中较少涉及的内容作深入探讨,对于一些设计问题、效率问题、程序风格,书中都会给出笔者的建议。书中关于运行效率的说明,都经过笔者亲自测试,具体测试方法在运行效率一节有详细说明。书中包括的代码风格之类的部分观点只是个人喜好问题,特此说明,读者可以根据自己的判断取舍。写作过程中,有时会觉得有太多的问题需要说明,却限于篇幅,不能一一展开;有时又不知如何下笔,不知如何才可以清楚简洁的讲清楚一个问题。对于很多自己的经验或者教训,只能在合适的时候插入只言片语,古人言“中有苦心而不能显”,“中有调剂而人不知”,大概如是。书中的代码、例子和文字是紧密配合的,没有了这些内容,也就失去了全书的灵魂所在。很多的说明文字必须通过代码来体会,这是笔者很多年来自己的体会。本书不求对Excel和VBA面面俱到的介绍,而且这也是不可能的。从内容选择和取舍来说,本书更注重实用,从笔者的经验出发,从应用的角度来介绍ExcelVBA的内容,而不是相反。目前写一本关于VBA的书好像有些不合时宜,毕竟VBA和VB一样,是属于“落后”和“过时”的技术,VB6的使用者,如笔者,大多已经转移到.net平台之下,那么,VBA的命运如何,我们还不得而知?但至少,在很长的一段时间内,作为Office开发的方式,序IIExcel与VBA程序设计Copyright©2005马维峰VBA和VSTO应该会共存,而对于非专业程序员,首选应该还是VBA,此为其一。其二,VBA开发的核心在于Office的对象模型的掌握,而这也是本书的重点之所在。本书的读者应该可以较熟练的使用Excel,例如可以使用公式,可以自定义公式;熟悉基本的Excel的概念和名词,例如宏、加载宏。对于基本没有程序设计经验的读者,第二章比较系统的介绍VBA语法和集成开发环境(IDE),对于熟悉VBA或VB的读者,可以略过这一章。其实对于Office系列的开发,语法只是很小的一部分,主要的难点和问题在于相应的对象模型及其应用,所以书中的大多数内容其实只是围绕Excel对象模型的解释和讲解。详细来说,本书的读者可以细分为:1.应用Excel作为基础平台,提供相应解决方案的程序员;2.各类科研工作者,应用Excel进行数据处理,这其实是本书最初的写作动机;3.在各类企事业部门需要进行大量机械性和重复性的信息、数据处理工作,希望可以利用Excel自动化这些工作的人员;4.其他对Excel自动化和VBA编程感兴趣的读者。本书使用的Excel版本是2003,但书中绝大多数内容并未涉及Excel2000之后的内容;除了少数内容,书中所介绍的内容也与Excel97内容兼容。对于较新版本的内容,在介绍时都尽可能的做了说明。最后祝学习愉快!************************关于书中的符号、提示、代码等的说明�所有关于菜单工具栏的操作以以下形式表示:“文件-打开”�对于一些技巧,需要提醒说明的问题,文中都已以下形式做了说明:序IIIExcel与VBA程序设计Copyright©2005马维峰打开IDE环境的方法�通过“工具―宏―VISUALBASIC编辑器”�通过快捷键“ALT+F11”�右键单击工具栏,选择“VISUALBASIC”,此工具栏有录制宏,打开VBAIDE等的快捷按钮�程序代码以以下方式显示(黄底、字体为CourierNew、5号):#001FunctionMyAdd(varA,varB)AsVariant#002MyAdd=varA+varB#003EndFunction�对于一些需要说明的问题,一般以脚注方式列出。目录iExcel与VBA程序设计Copyright©2005马维峰目录序.....................................................................................................................................................I目录.............................................................................................................................................I1.前言.........................................................................................................................................11.1.关于EXCEL和VBA...............................................................................................................11.2.EXCEL作为开发平台..............................................................................................................21.3.宏、加载宏和VBA................................................................................................................32.VBA简介................................................................................................................................62.1.VBA及其IDE初步...............................................................................................................62.1.1.VBA集成开发环境(IDE)的组成.............................................................................62.1.2.在VBAIDE下进行开发.............................................................................................102.1.3.善用工具及其他...........................................................................................................122.2.模块、函数和过程...............................................................................................................132.2.1.模块...............................................................................................................................132.2.2.过程...............................................................................................................................152.2.3.函数...............................................................................................................................172.2.4.调用过程和函数...........................................................................................................182.3.数据类型与变量...................................................................................................................192.3.1.常量和变量...................................................................................................................192.3.2.数据类型.......................................................................................................................202.3.3.运算符...........................................................................................................................222.3.4.数组...............................................................................................................................232.3.5.自定义数据类型...........................................................................................................242.3.6.枚举类型....................................................