科技>计算机>办公软件
ExcelVBA程序开发自学宝典(第2版)(含CD光盘1张)

ExcelVBA程序开发自学宝典(第2版)(含CD光盘1张)"

作者:罗刚君
ISBN:9787121141454
定价:¥79.0
字数:1168千字
页数:712
出版时间:2011-08
开本:16(188*260)
版次:01-01
装帧:
出版社:电子工业出版社
简介

《Excel VBA程序开发自学宝典(第2版)》是VBA入门的经典教材,对VBA的基础理论、语法规则、代码优化、编写思路、开发函数与使用数组等都进行了详尽的理论阐述和案例演示,同时还搭配窗体与控件、正则表达式、字典、File System Object、API、类模块、脚本语言的应用,以及开发功能区、开发加载宏、封装代码等高级应用,力求完整地展示了VBA的功能与魅力。通读本书,您不仅能学到如何开发函数、编写程序,还能设计报表系统,独立开发Excel百宝箱式的大中型插件。 本书是畅销书《Excel VBA程序开发自学宝典》的升级版本。《Excel VBA程序开发自学宝典》第1版于2009年10月上市,基于Excel 2007版本撰写,曾多次销罄重印,并在当当网和卓越网连续三个季度居VBA类图书销量第一名。然而本着精益求精的原则,作者在售后服务QQ群和售后论坛中收集了大量的用户反馈信息,对图书进行改版,删除了部分实用性不大的内容,增加了正则表达式、字典的应用、开发功能区与封装代码等章节,增加了开发插件的案例,全书改用Excel 2010截图,并修正了第1版中无法兼容Excel 2010的部分代码与设计思路,促使教学内容更具通用性。     读者对象:本书适应的读者对象是完全没有编程经验的读者,它将带您步入VBA程序殿堂。

前言

一本值得珍藏的工具书 VBA的概念源自于1987年Bill Gates在BYTES杂志上的理想——应用程序自动化,但具体实现却是在十年后的Office 97。直到现在,不论是最简单的自定义函数,还是设计各种复杂的企业自动化应用,VBA已经出现在许多企业应用的案例中。VBA不仅成为统一的Office自动化工具,同时也是目前世界上使用最多的一种编程语言。 随着企业信息化进程的发展,现在已经有越来越多的财务或市场销售人员关注到企业报表数据自动化的重要性与迫切性。尽管VBA的基础入门书籍有很多,就技术层面来说,针对高级用户的学习材料相对较少。过去VBA的爱好者需要访问Deja News这类网络资源,才能看到一些实战经验和技巧,虽然后来有了Google搜索引擎的协助,但可惜大多不够细化,也缺乏专业人士的系统性整理、分类,不利于读者消化、吸收及应用到实际工作中。 当第一次看到《Excel VBA程序开发自学宝典》时,我发现这正是市场需要的学习参考材料。目前市场上有关VBA的书籍大致分成两类:一类是专注在基础的介绍,包括环境和语法;第二类则是讲解实际应用设计案例,而这本书则是从入门到高级,汇集了上述两类书籍的精华。其中关于功能区(Ribbon)的开发教学更是具有极其重要的参考价值。 基于精益求精的原则,也为拓展读者的知识层面,作者在这本《Excel VBA程序开发自学宝典(第2版)》中增加了一些新的实用知识,它们是正则表达式、字典、功能区应用及封装代码等,这使得本书的知识层面更深、应用更广,同时弥补了第1版的不足之处。 这本书和其他书籍不同的地方,不仅在于它包罗万象,同时很多重要的观念也都通过实例进行了讲解。一如作者在前言所述,本书分成了入门篇、进阶篇、登堂篇、入室篇和攀峰篇几个部分,如果是已经有经验的VBA读者,不妨直接跳到第17章和第18章,可以了解作者在自学方面的付出和努力。 您不需要一口气读完二三十章的内容,而是将它视为一本重要的参考手册,当遇到不熟悉的新议题时,可以翻阅目录找到对应的章节。这样,这本书就可以将读者的VBA应用水平提高到一个新的层次。它不仅仅是以实例作为引导的入门书,也会成为面面俱到的工具书。 企业信息化管理战略顾问 郭安定(台湾) 如何学习VBA VBA是什么 Excel VBA是依附在Excel中的二次开发语言,全称为“Visual Basic For Application”。VBA已有20年历史,目前最新版本是7.0,其开发环境和语法已趋于完善。 VBA不仅是Excel的二次开发平台,同时还大量应用在其他软件中,包括机械设计软件AutoCAD、平面设计与排版软件CorelDraw、办公排版软件Word、网页设计软件FrontPage、项目管理软件Project、国产Office WPS等,VBA的应用前景相当广阔。 学VBA有用吗 这是很多网友问过的问题,其实答案只有一个——任何软件都有用,只看您学到什么程度。任何软件学好后都可以提升工作效率,以及带来经济效益,但前提是学得足够好,以及用得恰到好处。 当然,也可以换一种回答:别问有没有用,您有几分耕耘? 学习VBA的必要性 VBA能做什么?是否有必要学习?VBA有很多事都不能做,例如,不能开发独立的应用程序、不能开发ERP系统、不能实现网页设计、病毒清理等,但是在它的专业领域可以实现诸多令人惊奇的功能,常常让人眼前一亮,咦,制表原来可以这么快! 工作中是否有很多需求,Excel做不到?例如,底端标题、隔N行插入M行、金额大小写批量转换等。再或者说,Excel某些内置函数您一直不满意。例如,CONCATENATE有诸多限制;Vlookup只能返回第一个找到的值;SUM函数不能实现按颜色汇总,也不能对超过15位的数据求和……而这都是VBA的用武之地,所有问题VBA皆可轻松化解。 当然,VBA更重要的应用在于开发插件和设计运算系统(财务、人事管理系统等)。当VBA的功能发挥到极致时,很多平常需要数小时的计算工作,VBA能在三两分钟内完成。“秒杀”,对于VBA用户来说已司空见惯。 学习VBA的基础 学VBA需要会英语、需要懂VB或者C++,这是与网友交流中看到的最多的说法。其实不然,VBA与英语没有任何关系,一个不认识任何单词的人也可以学好VBA,就像笔者自己。当然,会英语对学习VBA是一个辅助条件,可以看懂一些外国的参考资料,但绝不是必要条件,国内的资料已足够丰富。 从另一个角度讲,如果学VBA需要懂英语,那岂不是懂英语的人对于VBA一看就会?事实上当然并非如此,一个英国人学习VBA并不比中国人的学习时间短,这也反证了英语不是学习VBA的基本要求。 VB和C++是否必需要会呢?当然也不是。不过懂VB和C++对于学习VBA是有帮助的,主要体现在编程的理念和思路上,已养成程序员的严谨、逻辑性等良好习惯,这种习惯和思维对学习VBA有帮助,但并非VB和C++程序本身构成学VBA的基础,它们所涉及的对象大不相同。一个C++专业程序员转学Excel VBA,仍然需要逐个学习Excel的对象、属性和方法,没有捷径可走。 那么学习VBA的基础究竟是什么呢?笔者的看法是:能分清什么是单元格、工作表、工作簿,会使用条件格式、定义单元格格式,会排序、筛选、填充、操作图形对象等,这已足够。当然,还需要认识26个英文字母。 简单吗?是的,学习VBA的基础条件就这些,如果您都会,那么祝贺您已步入VBA潜在用户之列。 当然,若要成为好的程序员,还需要有好的耐心、周密的思维能力、充分的逻辑性,以及举一反三的能力等。 学习VBA 需要背英文单词吗 当然不需要。举一个例子:100以内的加减法,你我皆会吧?会计算100以内的加减法是因为背下了100以内的所有加减法表达式的答案,还是因为掌握了加减法运算技术呢?1+1,1+2,1+3,1+4......2+2,2+3,2+4......也就是说,仅100以内的加法表达式就有5000多个,减法表达式也有5000多个,还不包括小数。把这么多题目的答案背下来是不可能的事,但是懂得计算方法却是极容易的事。方法会了,一通百通。 VBA同样也是这个道理。 如何发挥VBA的潜能 VBA的理论不多,但是理论极其重要,是解决一切VBA问题的基石。学习VBA,需要深入理解VBA的对象、属性、方法、事件,以及它们的调用方式,其后则一通百通。 本书有三分之一的篇幅展示VBA的基础理论,三分之一罗列应用案例,三分之一分析思路及过程,阐述代码的优化与提速。通读本书,且反复操作案例,必可掌握VBA的精髓。 作者 前言 Excel是所有制表软件中最优秀、市场占有率最高的一款软件。这归功于它除了拥有强大的制表功能外,还提供二次开发平台,允许用户开发新工具,以完成Excel本身不具备的功能。或者通过VBA实现自动化,让某些功能全自动执行,大大提升工作效率。这使得Excel从众多制表软件中脱颖而出。 通过VBA进行二次开发,可以强化Excel的功能,将某些烦杂或者重复的日常工作简化,还可以开发商业插件或者小型财务系统等。可以说VBA已完全融入办公文员的日常工作,拥有VBA就等于拥有效率。 本书目的 Excel VBA是一门强化Excel以及改造Excel的程序语言。利用VBA可以完成两大类任务:解决自己的工作问题(强化)和开发通用软件(改造)。而市场上大量的VBA书籍大都属于前者,侧重于讲述VBA基本语法及如何利用VBA处理一个工作中的具体疑难,而对于开发通用型插件来延伸Excel的通用功能方面则少有涉及。本书旨在弥补这种不足,在VBA理论的基础之外重点阐述如何开发插件,以适应一个群体的需求,而非仅仅处理个人的临时性问题。 本书用60%的篇幅普及VBA相关的理论知识,包括认识VBA的对象、属性、方法与事件的应用,还对如何提升程序的通用性、防错、提速等方面进行反复地阐述与论证,通过大量的实例传授程序的优化之道,力图提升代码的执行效率。 另外,VBA也可以借助它山之石强化自己的功能。所以本书对VBA相关的其他边缘性知识体系也做了系统介绍。例如,脚本语言WScript、文件管理系统对FileSystemObject、DOS磁盘管理系统与API函数、正则表达式、字典等在VBA中的应用。通过本书的学习,读者可以对VBA有相当完善的认识与理解,并建立自己的程序开发思想,具备开发大中型专业程序的能力。 此外,本书还有两个新的重点:功能区(Ribbon)的开发和封装安装程序。这是相对于《Excel VBA程序开发自学宝典》第1版新增的内容,其中封装安装程序表示将VBA代码封装成DLL文件,再将DLL文件制作成EXE安装程序,从而提升代码的安全性和程序的专业性。 本书结构 《Excel VBA程序开发自学宝典(第2版)》是一本讲述VBA语言理论基础及开发VBA程序的书,全书共30章,分为以下五个部分: 入门篇:VBA优势、功能、概念与操作界面 进阶篇:VBA语法、过程、事件与代码优化 登堂篇:VBA数组、窗体、控件与脚本语言 入室篇:正则表达式、字典、API、设计功能区与菜单 攀峰篇:开发通用插件及封装代码 本书特点 相对于同类书籍,本书在内容编排上具有以下特点。 除了对VBA语言的基础语法与对象操作解说外,重点展示了如何开发一个独立完善的插件,而非局限在通过VBA解决一个临时性的工作问题。通过本书,您完全可以实现编写自己的商业软件,也可以开发一个完善的管理系统。 本书属于国内第一本详细展示开发功能区的图书。书中第24章使用近50页讲解功能区中各元素的特点、调用语法和案例展示,通读该章节,您可以开发属于自己的功能区选项卡与菜单。 本书对代码的执行速度有较多的笔墨叙述,而且总结了多条代码优化的规则。 正则表达式应用在VBA中可以强化VBA的字符处理功能,本书详细地阐述了正则表达式的调用方法、语法,并提供了大量案例与思路。 详述利用VB 6.0企业版开发具有更高安全性的COM加载项,并通过Inno Setup将它封装成EXE格式的安装程序,读者可以借此开发自己的商业软件。 为了最大限度地提升读者的知识面,本书提供了几百个VBA相关的疑难解答。在每个奇数页的页脚处提供一个常见的问题,在偶数页的页脚处提供问题的答案,从而让读者在学习VBA理论知识与实践之外,可以拓展知识面、解除心中疑惑。 光盘文件 本书的随书光盘包括书中所有实例文件的源代码,以及作者精心开发的大型插件“Excel百宝箱”安装文件与源代码,以及百宝箱的制作教材。 本书还搭配了视频教材,不过由于时间关系,图书先印刷上市,然后再制作视频教材,所以视频教材将不会放在随书光盘中。 在本书上市后,视频教材将会陆续在以下论坛网址提供下载,请读者随时关注论坛的更新信息。网址如下: http://andysky.5d6d.com/thread-2488-1-1.html。 适合读者群 本书对VBA的基础理论有比较详尽的介绍,并提供了大量的案例。对VBA的高级知识——数组、类模块、API、正则表达式、开发功能区与菜单、VBE组件操作与开发插件、封装代码等也有大量的理论阐述与案例演示。 本书适应的读者包括三类: 一是VBA入门者,可以通过本书系统地学习VBA知识。 二是已有VBA基础,但需要扩充知识面,让自己的程序具有更好的通用性、纠错性及更高的执行效率。本书对程序的优化、纠错等方面进行了大量的论证。 三是已对VBA有相当的认识,但想开发更专业的商业软件者。本书对开发加载宏、自动化加载项和COM加载项有详细的阐述。并有较多案例演示,且提供制作安装程序的思路教学。 售后服务 本书提供售后服务QQ群68372500,以及售后服务论坛,网址如下: http://www.exceltip.net/。 读者可以通过以上QQ群或者论坛反馈阅读心得,或者提交对本书的建议。同时,如果读者发现书中有错别字,也请读者在QQ群中进行反馈,我们在二次印刷时将会改进。在阅读本书时,有疑问可以随时在售后论坛发帖,有专人负责解答。 另外,本书与《Excel 2010 VBA编程与实践》是配套图书,《Excel VBA程序开发自学宝典(第2版)》是VBA初级教材,《Excel 2010 VBA编程与实践》属于高级教材,两者配合阅读会取得最佳效果。 如果同时购买以上两本书,作者将额外提供12个赠品(加载宏插件,含源代码)。赠品名称与功能介绍如下。 1.二级选单 可以像数据有效性一样产生下拉列表,但更强大,可以产生二级选单。 2.批注替换工具 可以批量替换批注文本的工具,并且可设定是否区分大小写以及替换时的匹配方式。 3.选项菜单设计 通过它既可控制某些视图对象的显示与隐藏,又可学习选项菜单的设计思路。 4.一键录入代码 用于提高编写代码的速度与准确度,单击菜单即可录入常见代码。 5.复选框管理 可以批量生成复选框,也可以批量删除、勾选复选框,功能强大,操作方便。 6.历史数据记录器 将指定区域中每一个单元格的修改都记录在案,以备查用,且同时记录修改时间。 7.增强型视图控制 是内置的视图工具的强化版本,更重要的是可以学习如何开发功能区。 8.自定义函数封装 自定义函数 Connect,是&运算的强化版本,功能强大,且配备代码封装教材。 9.隐藏磁盘 可以将指定的磁盘隐藏起来,并禁止使用,从而确保私人文件的安全性。 10.隐藏错误值 可以将工作表中的所有错误值在隐藏与显示之间瞬间切换。 11.工作簿标签 在菜单产生工作簿标签的插件,让工作簿切换更方便、快捷。 12.Excel百宝箱8.0正式版 Excel百宝箱8.01是利用VBA编写的增强型插件,它包括105个功能。当安装百宝箱后,将产生【百宝箱】功能区及其子菜单 。百宝箱所有功能都通用于Excel 2003、Excel 2007和Excel 2010。可以在以下网址查看百宝箱8.0的详细介绍及动画功能展示,并下载试用版(读者可以免费获取正式版)。 网址:http://excelbbx.net。 本书作者 本书主要由罗刚君编写,他是多个大型论坛的版主,有着丰富的VBA程序设计经验,已出版七本Excel图书,包括《Excel VBA范例大全》、《Excel 2007常见技法与行业应用实例精讲》、《Excel 2007 VBA开发技术大全》、《Excel 2007函数案例速查宝典》、《Excel VBA程序开发自学宝典》、《Excel 2010 VBA编程与实践》、《Excel 2010函数与图表速查手册》。 另外参与本书写作的还有王金潮、王珉、康红、曹中伟、侯家良、龚丹、章兰新、罗国芳、龚太平 。其中第1至第8章由王金潮、王珉、康红、曹中伟编写;第9到第16章由侯家良、龚丹、章兰新、罗国芳编写;第18章到第23章由龚太平编写;其余章节由罗刚君编写。

目录

第1章 从插件看VBA的优越性 1 1.1 从身份证号获取个人信息 1 1.1.1 内置公式法 1 1.1.2 自定义函数法 2 1.1.3 插件法 3 1.1.4 浅谈VBA优势 4 1.2 插件特点及如何发挥插件的优势 5 1.2.1 Excel插件的特点 5 1.2.2 Excel插件的优势与限制 6 1.2.3 如何发挥插件的优势 7 1.2.4 开发Excel插件的条件 7 1.2.5 本书架构 8 第2章 VBA简史与安全性 9 2.1 VBA的发展史与优缺点 9 2.1.1 宏与VBA 9 2.1.2 VBA历史与版本 9 2.1.3 VBA的优、缺点 10 2.2 VBA能做什么 11 2.2.1 VBA主要用途 11 2.2.2 VBA主要用户 12 2.3 VBA的安全性 13 2.3.1 VBA的安全性 13 2.3.2 了解安全性对话框 13 2.3.3 让自己的VBA程序畅通无阻 16 2.4 使用VBA帮助 17 2.4.1 利用帮助学习VBA语法 17 2.4.2 捕捉错误 19 第3章 巧设VBA编辑器提升编程效率 23 3.1 认识VBE组件 23 3.1.1 访问VBA开发环境 23 3.1.2 认识VBE的组件 24 3.1.3 VBE中不同代码窗口的作用 29 3.2 VBE中的选项设置 31 3.2.1 编辑器选项 31 3.2.2 编辑器格式选项 34 3.2.3 通用选项 35 3.2.4 VBA代码保护 36 第4章 VBA基本概念 38 4.1 理解VBA的对象、属性与方法 38 4.1.1 什么是对象 38 4.1.2 如何理解属性 39 4.1.3 如何理解方法 40 4.1.4 判断对象的属性与方法 41 4.2 认识VBA的事件 41 4.2.1 什么是事件 41 4.2.2 事件的分类及其用途 42 4.3 VBA的运算符 42 4.3.1 VBA中运算符的分类 42 4.3.2 算术运算符 42 4.3.3 比较运算符 43 4.3.4 逻辑运算符 43 4.3.5 运算符的优先顺序 45 4.4 简单的字符处理函数 46 4.4.1 字符串处理函数功能介绍 46 4.4.2 StrComp:字符相似比较 47 4.4.3 Strconv:字符串类型转换 47 4.4.4 Format:格式化字符串 48 4.4.5 LCase/ UCase:大小写转换 48 4.4.6 String / Space:重复字符 49 4.4.7 Lset / Rset:字符串往左/右对齐 49 4.4.8 Instr:返回字符出现位置 50 4.4.9 Left/Mid/Right:从左、中、右取值 50 4.4.10 LTrim/RTrim/ Trim:去除空格 51 4.4.11 Like:字符串相似度比较 51 第5章 深入解析数据类型与变量 53 5.1 数据类型 53 5.1.1 为什么要区分数据类型 53 5.1.2 认识VBA的数据类型 53 5.1.3 数据类型的声明与转换 55 5.2 常量与变量 57 5.2.1 常量的定义与用途 57 5.2.2 常量的声明方式 58 5.2.3 常量的命名规则 58 5.2.4 变量的定义与用途 59 5.2.5 变量的类型与声明 60 5.2.6 为什么要声明变量 61 5.2.7 区分静态变量与动态变量 62 5.2.8 变量的作用域和生命周期 63 5.2.9 认识对象变量 65 5.2.10 认识数组变量 66 第6章 编写Sub过程及开发函数 67 6.1 认识过程 67 6.1.1 过程的分类与调用方式 67 6.1.2 插入过程的方式 69 6.1.3 过程的命名规则 71 6.2 编写Sub过程 71 6.2.1 Sub过程的语法解析 71 6.2.2 Sub过程的执行流程 73 6.2.3 过程的递归 77 6.2.4 Sub过程实例演示 78 6.3 认识Function过程 79 6.3.1 Function过程的特点 79 6.3.2 Function的语法解析 79 6.3.3 调用Function过程 80 6.4 关于过程的参数 81 6.4.1 Sub过程的参数及应用 81 6.4.2 按值传递与按址传递的参数 83 6.4.3 Function过程的参数 84 6.5 开发自定义函数 85 6.5.1 开发不带参数的Function过程 85 6.5.2 开发带有一个参数的Function过程 87 6.5.3 开发带有两个参数的Function过程 89 6.5.4 开发带有两个可选参数的Function过程 91 6.5.5 开发带有不确定参数的Function过程 93 6.5.6 开发具有三个参数且第三个为可选的Function过程 96 6.6 编写函数帮助 98 6.7 总结 103 第7章 对象的引用方式总结 104 7.1 VBA中的对象及结构 104 7.1.1 关于对象的相关概念 104 7.1.2 对象与对象集合 105 7.1.3 对象的层次:父对象与子对象 106 7.1.4 认识Excel所有对象 107 7.2 对象的表示法 108 7.2.1 对象的完整引用方式与简写 108 7.2.2 利用名称获取对象 108 7.2.3 利用集合索引号获取对象 109 7.2.4 活动对象的简化引用 110 7.2.5 利用With语句简化对象引用 111 7.2.6 事件中的Me关键字 112 7.3 单元格的各种引用方式 113 7.3.1 Range("A1")方式引用单元格 114 7.3.2 Cells(1,1)方式引用单元格 117 7.3.3 [a1]方式引用单元格 118 7.3.4 Range("A1")、Cells(1,1)与[a1]比较 118 7.3.5 Selection与ActiveCell:当前选区与活动单元格 120 7.3.6 Names:利用名称引用单元格或区域 121 7.3.7 UsedRange与CurrentRegion 123 7.3.8 SpecialCells:按条件引用区域 126 7.3.9 CurrentArray:引用数组区域 128 7.3.10 Resize:重置区域大小 129 7.3.11 Offset:根据偏移量引用区域 130 7.3.12 Union:单元格的合集 133 7.3.13 Intersect:单元格、区域的交集 135 7.3.14 End:引用源区域的区域尾端的单元格 137 第8章 让代码自动运行 141 8.1 让宏自动执行 141 8.1.1 Auto自动宏 141 8.1.2 工作簿事件中的自动宏 142 8.1.3 利用鼠标移动事件执行自动宏 143 8.2 详谈VBA的事件 144 8.2.1 事件的定义与分类 144 8.2.2 事件的层次和执行顺序 144 8.2.3 事件的禁用与启用 147 8.2.4 事件代码的录入方式 149 8.3 VBA有哪些事件 149 8.3.1 应用程序级别事件介绍 150 8.3.2 工作簿事件介绍 151 8.3.3 工作表事件介绍 153 8.3.4 事件的特例 153 第9章 编程规则与代码优化 155 9.1 代码编写规则 155 9.1.1 对代码添加注释 155 9.1.2 长代码分行 159 9.1.3 代码缩进对齐 160 9.1.4 声明有意义的变量名称 161 9.1.5 IF…End IF类配对语句的录入方式 162 9.1.6 录入事件代码的方式 163 9.1.7 借用自动列出成员录入代码 163 9.1.8 善用公共变量 164 9.1.9 将较大的过程分为多个再调用 164 9.1.10 减少过程参数 165 9.1.11 兼容Excel 2010和Excel 2003 165 9.2 优化代码 166 9.2.1 强制声明变量 166 9.2.2 善用常量 166 9.2.3 关闭屏幕更新 166 9.2.4 利用With减少对象读取次数 167 9.2.5 利用变量减少对象读取次数 168 9.2.6 善用带$的字符串处理函数 169 9.2.7 善用循环中的步长减少循环次数 169 9.2.8 利用数组代替单元格对象 170 9.2.9 不重复调用自定义函数时不使用自定义函数 172 9.2.10 将不改变值或者属性的语句放到循环语句外 172 9.2.11 利用长度计算判断单元格是否非空 173 9.2.12 尽量调用内置功能 173 9.2.13 利用对象循环替代单元格循环 174 第10章 常用语法剖析 175 10.1 输入、输出语句 175 10.1.1 Msgbox函数的功能及作用 175 10.1.2 Msgbox的语法 176 10.1.3 Msgbox函数的限制 180 10.1.4 利用WScript突破Msgbox限制 181 10.1.5 Debug.print 182 10.1.6 Inputbox函数的功能与作用 183 10.1.7 Inputbox函数的语法 183 10.1.8 借用Inputbox函数生成月历 186 10.1.9 Inputbox函数的限制 188 10.1.10 利用Application.Inputbox方法替代Inputbox函数 188 10.1.11 Application.Inputbox语法详解 188 10.2 条件判断语句 192 10.2.1 IIF函数的语法与应用 192 10.2.2 IIF函数的限制 195 10.2.3 IF…Then…语句的语法详解 196 10.2.4 IF…Then…应用案例 196 10.2.5 IF…Then…Else…语法与应用 198 10.2.6 条件语句的嵌套应用 200 10.2.7 Select Case语法详解 203 10.2.8 Select Case与IF… Then…Else之比较 207 10.2.9 借用Choose函数简化条件选择 208 10.3 循环语句 211 10.3.1 For Next语句 211 10.3.2 利用循环获取工作表目录 217 10.3.3 For Each Next语法详解 220 10.3.4 利用循环选择区域中所有负数 221 10.3.5 利用循环统一所有图片高度并对齐单元格 223 10.3.6 Do Loop语法详解 225 10.3.7 在工作表中循环获取所有字体 227 10.3.8 计算得分累加到1000时的场次 228 10.3.9 利用循环产生文字动画 229 10.4 With语句 231 10.4.1 With语句的用途与语法 231 10.4.2 With语句实例 234 10.4.3 With语句常见错误分析 236 10.5 错误处理语句 238 10.5.1 错误类型与原因 238 10.5.2 Err对象及其属性、方法 239 10.5.3 认识Error函数 239 10.5.4 罗列错误代码及含义 240 10.5.5 VBA的错误处理机制 241 10.5.6 错误处理:错误三次则退出程序 247 10.5.7 错误处理:多功能选区统计 248 10.5.8 错误处理的作用域 250 10.5.9 GoSub...Return语句 253 10.5.10 开发错误处理函数 255 第11章 基本编程应用案例 258 11.1 Application应用案例 258 11.1.1 英文单词排错 258 11.1.2 计算表达式 259 11.1.3 禁止程序运行时弹出警告框 260 11.1.4 调整计算方式 261 11.1.5 建立文件目录 262 11.1.6 在指定时间提示行程安排 264 11.1.7 模拟键盘快捷键 265 11.1.8 为过程指定组合键 267 11.1.9 合并区域 268 11.1.10 获取多区域的交集 270 11.1.11 滚动显示Excel状态栏信息 271 11.1.12 选定任意工作簿中的任意区域 272 11.2 Range对象应用案例 273 11.2.1 复制单元格数据 273 11.2.2 将区域中的数据合并到一个单元格中 275 11.2.3 多工作表数据合并,且添加边框 276 11.2.4 在区域中精确查找 278 11.2.5 替换不规则货品名称 280 11.2.6 多区域合并 281 11.2.7 反向选择单元格 282 11.2.8 插入图片并调整为选区大小 284 11.2.9 选择当前表已用区域的奇/偶数行 286 11.2.10 删除重复值 287 11.2.11 将选区导出为图片 289 11.2.12 选择本表所有合并单元格 291 11.2.13 朗读选区字符 292 11.2.14 隐藏所有公式结果为错误的单元格 293 11.2.15 快速添加日期批注且自动缩放 294 11.2.16 生成二级下拉选单 295 11.2.17 将产量批量转换成下拉菜单 297 11.3 Names对象应用案例 298 11.3.1 利用名称引用其他表数据 298 11.3.2 借用名称,将区域数据引用到组合框 300 11.3.3 设计三级下拉菜单 301 11.4 Comments 对象应用案例 304 11.4.1 批量将数据导入批注 304 11.4.2 在所有批注末尾添加指定日期 307 11.4.3 为批注设置图片背景 308 11.4.4 添加个性化批注 309 11.4.5 批量修改当前表批注的外观 312 11.4.6 替换所有批注中的“计算机”为“电脑” 313 11.5 Sheets对象应用案例 314 11.5.1 添加汇总工作表 314 11.5.2 除“目录”工作表外隐藏其他所有工作表 315 11.5.3 建立带链接功能的工作表目录,且通过快捷键返回目录 316 11.5.4 对当前表已用区域设置背景图片 318 11.5.5 批量命名工作表 319 11.6 Workbooks对象应用案例 320 11.6.1 新建工作簿并调用保存对话框 320 11.6.2 工作簿拆分 322 11.6.3 导入文本文件到当前工作簿 323 11.6.4 每30分钟备份工作簿 324 11.6.5 清除所有打开工作簿的密码 326 11.6.6 获取工作簿建立时间和最后一次保存时间 327 11.6.7 记录文件打开次数 328 11.6.8 设计一个查看一次即自动删除的工作簿 329 11.6.9 不打开工作簿而提取数据 330 11.6.10 将指定文件夹下每个工作簿中的三月生产表合并到一个工作簿 332 11.6.11 建立指定文件夹下所有工作簿目录和工作表目录 335 11.7 Windows 对象案例 337 11.7.1 切换当前窗口的网格线、滚动条、标题与工作表标签 337 11.7.2 自由滚动窗口方便阅读工作表数据 338 11.7.3 计算活动单元格左边距 340 11.7.4 三种方式不显示零值 341 11.8 程序级事件案例 343 11.8.1 新工作簿环境设计 343 11.8.2 打开任意工作簿时全自动备份 344 11.9 工作簿事件案例 345 11.9.1 新建工作表时自动设置页眉 345 11.9.2 未汇总则禁止关闭工作簿 346 11.9.3 新建工作表时以当前时间命名 347 11.9.4 月底以外时间禁止打印总表 347 11.9.5 禁止切换到其他工作簿 348 11.10 工作表事件案例 349 11.10.1 在状态栏提示最大值的单元格地址 349 11.10.2 快速录入出勤表 350 11.10.3 在状态栏显示选区的字母、数字、汉字个数 351 11.10.4 实时监控单元格每一次编辑的数据与时间 352 11.10.5 利用数字简化公司名输入 354 11.10.6 录入数据时自动跳过带公式的单元格 355 11.10.7 对选择区域进行背景着色 355 11.11 ActiveX控件事件案例 357 11.11.1 鼠标移过时切换按钮颜色 357 11.11.2 鼠标移动录入姓名 358 11.11.3 鼠标移过组合框时加载图片 359 11.11.4 鼠标移过列表框时输入品名与单价 360 第12章 数组基础 362 12.1 数组基础 362 12.1.1 数组概念 362 12.1.2 数据的维数 362 12.1.3 利用索引号获取数组中的元素 364 12.1.4 声明数组与赋值 365 12.1.5 静态数组与动态数组 366 12.2 内置数组函数 367 12.2.1 Array:创建一个数组 367 12.2.2 Isarray:判断是否是数组 368 12.2.3 Index:从数组中取值 368 12.2.4 Transpose:转置数组 368 12.2.5 LBound / Ubound:获取数组的上下界 371 12.2.6 Split/ Join:文本与数组转换 372 12.2.7 Filter:数组的筛选 373 第13章 数组实战 375 13.1 自定义数组函数 375 13.1.1 定义数组函数要点 375 13.1.2 获取工作表目录 375 13.1.3 星期序列 376 13.1.4 获取区域的唯一值 377 13.2 数组应用案例 378 13.2.1 按姓名排列的纵向学员表转置为按班级横向排列 378 13.2.2 表学员资料查询 379 13.2.3 定义百家姓序列 381 13.2.4 查询两列相同项 382 13.2.5 获取文件夹下所有文件详细信息 383 13.2.6 获取当前表所有批注 384 第14章 设计窗体 386 14.1 UserForm简介 386 14.1.1 窗体与控件的用途 386 14.1.2 插入窗体与控件的方法 386 14.1.3 使用Excel 5.0对话框 387 14.2 窗体控件一览 387 14.2.1 标签 387 14.2.2 文字框 388 14.2.3 命令按钮 388 14.2.4 复合框 388 14.2.5 列表框 388 14.2.6 复选框 388 14.2.7 单选框 388 14.2.8 分组框 388 14.2.9 切换按钮 388 14.2.10 多页控件 388 14.2.11 滚动条 389 14.2.12 图像 389 14.2.13 RefEdit 389 14.2.14 附加控件 389 14.3 设置控件属性 389 14.3.1 调整窗体控件位置与大小 389 14.3.2 设置控件的顺序 390 14.3.3 共同属性与非共同属性 390 14.3.4 设置颜色属性 390 14.3.5 设置高与宽属性 391 14.3.6 设置Picture属性 391 14.3.7 设置光标属性 391 14.3.8 设置复合框 392 14.3.9 设置Flash动画 392 14.4 窗体与控件的事件 393 14.4.1 窗体事件介绍 393 14.4.2 显示窗体时随机加载背景图 394 14.4.3 初始化窗体时填充列表框下拉列表 394 14.4.4 双击时关闭窗体 395 14.4.5 窗体永远显示在上左角 395 14.4.6 按比例缩放窗体及滚动窗体 396 14.4.7 控件事件介绍 398 14.4.8 在窗体中建立超链接 398 14.4.9 鼠标移过更新列表框数据 399 14.4.10 让输入学号的文字框仅能录入6位数字 400 14.4.11 鼠标拖动调整文字框大小 401 14.4.12 为窗体中所有控件设置帮助 403 14.5 窗体运用案例 405 14.5.1 设计登录界面 405 14.5.2 权限认证窗口 406 14.5.3 设计计划任务向导 408 14.5.4 设计动画帮助 411 14.5.5 用窗体浏览图片 412 14.6 窗体与表格的交互 414 14.6.1 设计多表录入面板 414 14.6.2 多条件高级查询 416 14.6.3 分类汇总捐赠额并按需求导出 418 14.6.4 输入长地名时逐一提示 419 第15章 表单控件与ActiveX控件 423 15.1 表单控件 423 15.1.1 控件的调出方式 423 15.1.2 表单控件的功能 423 15.1.3 表单工具的优缺点 423 15.1.4 案例:批量插入单选框并分组 423 15.2 ActiveX控件 425 15.2.1 ActiveX控件功能 425 15.2.2 利用列表框突破数据有效性的单列限制 425 15.2.3 在工作表中播放Flash动画 427 15.2.4 在工作表左上角播放GIF动画 427 15.2.5 在复合框显示数据源的唯一值 428 第16章 FSO、WScript与DOS 在VBA中的应用 431 16.1 认识FSO 431 16.1.1 FSO的用途与调用方式 431 16.1.2 FSO的对象 432 16.1.3 FSO常用对象的方法与属性 432 16.2 用FSO处理文件与目录 434 16.2.1 获取文件夹相关信息 434 16.2.2 删除D盘中大小为0的文件夹 434 16.2.3 获取C盘中所有文件列表 435 16.3 关于脚本语言WScript 435 16.3.1 关于脚本语言 435 16.3.2 WScript的方法与属性 436 16.3.3 WScript.Shell的使用方法 436 16.4 脚本语言应用案例 437 16.4.1 在桌面建立当前工作簿的快捷方式 437 16.4.2 将Excel 2003和Excel 2010添加到右键“发送到”菜单 437 16.4.3 显示桌面所有文件列表 438 16.4.4 关闭数字键及打开大写锁定键 439 16.4.5 提取选择的文件夹中所有文件的信息 439 16.4.6 打开网上邻居 440 16.4.7 在收藏夹中添加网址 441 16.5 VBA中调用DOS 441 16.6 DOS在VBA中的应用 442 16.6.1 获取CDE三个磁盘根目录中的目录列表 442 16.6.2 获取D盘中所有Excel文件 443 16.6.3 获取IP地址与网关设置 443 第17章 正则表达式与VBA 444 17.1 何谓正则 444 17.1.1 概念 444 17.1.2 特点 444 17.1.3 调用方式 445 17.2 语法基础 447 17.2.1 调用正则表达式的基本格式 447 17.2.2 正则表达式的参数 447 17.2.3 匹配的优先顺序 449 17.2.4 借用元字符强化搜索功能 450 17.3 正则表达式应用 467 17.3.1 乱序字符串取值并汇总 467 17.3.2 计算建筑面积 468 17.3.3 取括号中的数字 470 17.3.4 去除字符串首尾的空白字符 470 17.3.5 将字符串中的多段数字分列 471 17.3.6 获取Email地址 472 17.3.7 提取文件的路径与文件名 473 17.3.8 汇总人民币 474 17.3.9 开发分列函数 475 17.3.10 删除重复字词 476 第18章 字典的应用 478 18.1 Dictionary 对象基础 478 18.1.1 Dictionary对象的调用 478 18.1.2 Dictionary的特点 481 18.1.3 Dictionary的属性与方法 482 18.2 字典的应用技巧 485 18.2.1 开发取唯一值的函数 485 18.2.2 分类汇总 487 18.2.3 对多列数据相同者应用背景色 488 18.2.4 数据查询 489 18.2.5 保存与载入选区 490 第19章 命令栏对象与工具栏开发 494 19.1 关于内置命令栏 494 19.1.1 Excel对命令栏的处理方式 494 19.1.2 内置命令栏的分类 494 19.1.3 手工定义工具栏按钮 494 19.2 了解CommandBars对象 495 19.2.1 CommandBar的常用属性 495 19.2.2 CommandBar的方法 495 19.2.3 获取CommandBars子对象的名称与类型 495 19.2.4 获取及保存内置图标 496 19.3 创建与删除工具栏 498 19.3.1 建立工具按钮基本语法 498 19.3.2 自定义新工具栏案例:工作表目录 500 19.4 创建弹出式工具栏 501 19.4.1 创建弹出式工具栏语法结构 501 19.4.2 创建一个弹出式工具栏 502 19.4.3 创建三级工具栏 502 19.5 特殊的工具栏 503 19.5.1 创建可读写的弹出式工具栏 504 19.5.2 利用工具栏文字框查找数据 505 第20章 自定义菜单 507 20.1 菜单基础 507 20.1.1 菜单的分类 507 20.1.2 创建菜单基本语法 507 20.1.3 设计菜单注意事项 508 20.2 创建新菜单案例 508 20.2.1 创建关机与重启两个工作表菜单 508 20.2.2 由用户定义子菜单容器 509 20.3 设计感应菜单 510 20.3.1 在指定工作表才可用的菜单 510 20.3.2 在指定区域才可用的菜单 510 20.3.3 选择图表才出现的菜单 511 20.4 认识快捷菜单 512 20.4.1 快捷菜单的分类 512 20.4.2 获取Excel所有快捷菜单 512 20.4.3 Excel多版本中快捷菜单的差异 513 20.5 定制快捷菜单 513 20.5.1 创建单元格右键子菜单 513 20.5.2 设计左键快捷菜单 514 20.5.3 打造最强大的单元格右键菜单 516 20.5.4 在窗体中显示快捷菜单 517 第21章 认识类和类模块 519 21.1 类模块基础 519 21.1.1 类模块应用范围 519 21.1.2 类模块事件 519 21.1.3 类模块与变量 520 21.2 类的应用 520 21.2.1 程序级事件:在标题处显示工作簿路径 520 21.2.2 对所有工作表的选区背景着色 522 21.2.3 为窗体的按钮批量设置事件过程 523 21.2.4 开发颜色面板 524 第22章 API的基本应用 527 22.1 API在窗体设计中的应用 527 22.1.1 按任意地方都可拖动的窗体 527 22.1.2 设计半圆形动画窗体 528 22.1.3 资料录入完整鼠标才可以离开窗体的范围限制 529 22.1.4 拖动窗体随意修改窗体大小 531 22.1.5 设计百叶窗式动态窗体 532 22.1.6 在窗体中展示文字动画 533 22.2 API的其他应用 534 22.2.1 发送邮件 534 22.2.2 仿Photoshop设计彩蛋 536 22.2.3 让ActiveX控件在非设计模式下也能移动 537 22.2.4 将文件删除并存入回收站 537 第23章 VBA与注册表 539 23.1 VBA对注册表的控制方式 539 23.1.1 什么是注册表 539 23.1.2 VBA操作注册表的方法 540 23.1.3 VBA操作注册表的优缺点 541 23.1.4 借用脚本实现注册表的自由控制 541 23.2 注册表的应用 542 23.2.1 记录当前工作簿最后一次打开时间 542 23.2.2 限制工作簿使用次数 542 23.2.3 让零值显示设置适用所有工作表 543 23.2.4 禁止使用U盘 544 第24章 Ribbon功能区设计 546 24.1 功能区的特点 546 24.1.1 外型特点 546 24.1.2 调用特点 547 24.1.3 开发特点 548 24.2 准备工作 550 24.2.1 认识OfficeCustomUIEditor 550 24.2.2 OfficeCustomUIEditor的使用技巧 551 24.2.3 VBA与功能区的相互调用方式 552 24.3 基本语法 553 24.3.1 功能区元素图解 554 24.3.2 用模板提高定制功能区的效率 556 24.3.3 定制新功能区语法详解 558 24.3.4 在内置选项卡插入按钮 572 24.3.5 修改内置选项卡的名称 574 24.3.6 调用内置组和命令 575 24.3.7 锁定内置功能 575 24.3.8 使用回调函数控强化功能区 577 24.3.9 调用图片生成菜单 586 24.3.10 设计动态菜单 589 24.4 功能区开发精彩案例 594 24.4.1 开发内置图标查看器 594 24.4.2 在功能区设计动态时钟 596 24.4.3 开发汉化版图片另存插件 597 24.4.4 调用照相机与更改形状 600 24.4.5 在功能区创建工作表目录 601 第25章 VBE的对象模型与对象控制 604 25.1 准备工作 604 25.1.1 设置Excel选项 604 25.1.2 引用对象库 605 25.2 认识VBE的对象模型 605 25.2.1 VBE对象模型的层次结构 605 25.2.2 VBE对象介绍 605 25.2.3 如何引用VBE对象 607 25.2.4 罗列当前工程中所有组件及其类型 607 25.3 VBE对象的控制 608 25.3.1 罗列指定模块中所有过程的名称 608 25.3.2 罗列所有模块代码总行数 610 25.3.3 利用代码添加模块 611 25.3.4 用代码添加工作簿事件代码 612 25.3.5 创建ActiveX控件且编写单击事件代码 613 25.3.6 删除当前工作簿所有代码及窗体、模块组件 614 25.3.7 判断工作簿是否有宏代码 615 25.3.8 全自动生成窗体、控件及事件代码 616 第26章 程序开发思想 618 26.1 开发人员自我定位 618 26.1.1 区别开发人员与应用人员 618 26.1.2 开发人员基本条件 618 26.2 开发插件与普通VBA编程的区别 619 26.3 如何开发最佳应用程序 619 26.3.1 罗列应用程序需具备的功能 619 26.3.2 与终端用户交流 619 26.3.3 规划程序结构 620 26.3.4 设定友好的界面 620 26.3.5 提升程序通用性 620 26.3.6 注重程序效率 621 26.3.7 提供防错机制 621 第27章 开发VBA百宝箱 622 27.1 菜单定制基础 622 27.1.1 认识命令栏对象 622 27.1.2 创建命令栏基本语法 622 27.1.3 罗列VBE中所有菜单与子菜单 623 27.1.4 创建工具栏以统计模块中过程相关信息 624 27.2 开发VBA插件工具箱 626 27.2.1 开发插件的准备工作 626 27.2.2 罗列插件功能 626 27.2.3 开发代码编号工具 626 27.2.4 开发代码美化工具 628 27.2.5 开发代码导出工具 630 27.2.6 开发代码清除工具 632 27.2.7 开发代码减肥工具 632 27.2.8 编写菜单 634 27.2.9 发布插件 637 第28章 插件设计 639 28.1 关于加载宏 639 28.1.1 加载宏的特点 639 28.1.2 为什么使用加载宏 640 28.1.3 加载宏管理器 640 28.1.4 内置加载宏的加载与使用 640 28.1.5 安装与卸载自定义加载宏 641 28.2 关于加载项 641 28.2.1 加载项的分类 642 28.2.2 加载项的开发方式 642 28.2.3 两种加载项的安装方式 642 28.3 准备编写XLAM加载宏 644 28.3.1 认识Excel工作簿的格式 644 28.3.2 生成加载宏的两种方法 645 28.3.3 宏转换成加载宏的技巧 645 28.4 开发公农历日历控件 646 28.4.1 确认程序需具备的功能 646 28.4.2 定义公历转农历的函数 646 28.4.3 设计日期输入器窗体 647 28.4.4 编写窗体初始化代码 648 28.4.5 实现输入器与工作表交互 650 28.4.6 设计帮助 652 28.4.7 定制菜单 655 28.4.8 测试并发布插件 655 28.5 开发突出显示当前行列插件 656 28.5.1 确认所需具备的功能 657 28.5.2 通过xml开发功能区选项卡 657 28.5.3 编写随鼠标移动而着色的VBA代码 658 28.5.4 测试代码 662 第29章 代码封装技巧 664 29.1 封装基础 664 29.1.1 代码封装的优越性 664 29.1.2 COM加载项开发基础 664 29.1.3 安装VB 6.0企业版 665 29.1.4 开发COM加载项的基本步骤 666 29.2 开发并封装重复值控制器 668 29.2.1 确认插件所需功能 668 29.2.2 建立VB工程 669 29.2.3 添加引用 669 29.2.4 编写菜单代码及响应事件 669 28.6.5 编写重复值控制主程序 670 29.6.6 发布加载项并安装调试 671 29.3 封装相同项与不同项的比较工具 672 29.3.1 确认插件所需功能 673 29.3.2 在Excel中创建窗体并调试 673 29.3.3 建立VB工程 674 29.3.4 添加引用 674 29.3.5 生成功能区按钮与响引事件 674 29.3.6 导入窗体 675 29.3.7 发布加载项并安装调试 677 29.4 设计安装软件 678 29.4.1 设计安装软件的必要性 678 29.4.2 程序选择 678 29.4.3 使用程序向导制作安装软件 679 29.4.4 自定义高级安装软件 682 29.4.5 制作相同项与不同项的高级安装程序 684 第30章 开发“Excel百宝箱” 687 30.1 程序规划 687 30.1.1 了解终端用户需求 687 30.1.2 确认插件功能表 688 30.1.3 规划插件结构 688 30.2 财务工具箱 689 30.2.1 制作工资条头 689 30.2.2 根据工资计算所需钞票张数 692 30.2.3 小写金额转大写 696 30.2.4 工作簿与工作表合并 697 30.2.5 工作表拆分 707 30.2.6 工作簿拆分 711 30.2.7 复选框工具 715 30.2.8 文本与数据转换 719 30.3 合并工具箱 720 30.3.1 合并数据并居中及其还原 721 30.3.2 合并数据并复制 723 30.3.3 取消区域合并填充原合并值 725 30.3.4 可还原的合并居中 726 30.3.5 合并列中相同数据及还原 727 30.4 批注工具箱 729 30.4.1 批注管理器 730 30.4.2 添加个性化批注 734 30.4.3 建立图片批注 735 30.4.4 批量添加右列内容为批注 737 30.4.5 批量导入同名照片到批注 737 30.5 图片工具箱 740 30.5.1 将选区转换成图片 740 30.5.2 批量导入图片 742 30.5.3 批量导出图片到硬盘 745 30.6 开发函数 747 30.6.1 开发自定义函数 747 30.6.2 设计函数帮助 766 30.7 定制百宝箱帮助 769 30.7.1 定制百宝箱帮助 769 30.7.2 信息反馈 775 30.8 定制多级菜单并发布 777 30.8.1 定制菜单 777 30.8.2 发布 778 30.8.3 小结 778

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个