《Excel2010VBA编程与实践》是2010年出版的图书,作者是罗刚君章兰新黄朝阳。
基本介绍
- 书名:Excel2010VBA编程与实践
- 作者:罗刚君 章兰新 黄朝阳
- ISBN:978-7-121-12039-8
- 定价:69.00元
- 出版时间:2010年11月
内 容 简 介
本书是“Excel疑难千寻千解”丛书之一,为读者展示VBA编程的实战技巧,包括工作中的疑难处理方案、自定义函式技术、代码封装技术、功能区设计技术,以及外挂程式开发实战与原理分析。本书侧重于“解决问题”,主要展示诸多常见疑难的解决方案。阅读本书,可以解决工作中的诸多疑难杂症,大大提高工作效率,且有助于提升编程能力、拓展思路,将理论向实战迈进。
本书有一个贯穿全文的思想:让代码同时具备準确、纠错、兼容和效率四个特性,所以本书所有案例都在準确性与高效性的基础上提供完善的错误处理措施与思路讲解,且所有案例都通用于Excel 2003、2007和2010。作者使用Excel 2010界面写作,但代码在多个版本中都可以正常运行,不需要任何修改。
本书包括251个案例,最后一个是VBA的大型综合套用——开发工资管理系统。书中每个案例採取疑难描述、解决方案、操作方法、原理分析、知识扩展五个步骤进行讲解,力图解决问题之外还让读者可以通晓其思路和原理。
本书配合《Excel VBA程式开发自学宝典》学习会有更好效果,该书侧重于VBA的基础理论教学,而本书则侧重于解决实际问题,属于该书配套的进阶套用。前者学习理论与语法,而通过本书学习思路与技巧。
本书既适合Excel VBA用户参考学习,又可以作为大中专院校或者企业的培训教材,同时对于在数据处理与分析方面有实战经验的用户也有较高的参考价值。
自 序
寻,是一种尺度。古时八尺为一寻,王安石诗云“飞来峰上千寻塔,闻说鸡鸣见日升”,形容飞来峰上塔之极高。
寻,是一种技巧。今日网路为自学者提供了非常巨大的资源平台,但缺乏技巧的查询和求助,往往“众里寻他千百度”却难有“蓦然回首”的顿悟。而善用关键字搜寻,则常可使人体会到“灯火阑珊”之美景。
寻,是一种追求。网路上活跃着这幺一群人,他们曾经也是懵懂的菜鸟,在寻解获助时心存感激,在寻师问道时心怀崇敬。渐渐地,他们因互助的理念而聚集,相互扶持,坚持不懈地学习、实践与创新。面对一个个技术的据高点,他们是睿智而无私的“寻者”,壁立千寻敢登攀,寻根究底解疑难!
寻,是一种心境。求知探秘当志存华山论剑之高远,解决问题应意守无剑无招之寻常,这便是“寻者”修炼的心境。来者是客,有问必答,不慕华丽的招式,但求直击问题之根源,用简单的方法完成複杂的事情。
本丛书的作者就是这样的一群“寻者”。在长期的线上答疑和线下交流、培训活动中,他们接触过针对同一类问题千奇百怪的提问,深知许多人苦寻而不得的要害,甚至练就了一手仅根据含混不清的提问进行猜题、解题的本领。通过不断地积累与整理,Excel技巧网(技术社区)的版主们推出了“Excel疑难千寻千解”丛书,这些“疑难”都是许多人曾经搜寻和提问过的,也是大多数用户在工作中可能会遇到的一些寻常问题。书中案例涉及行政办公、人力资源、金融财务、经济统计、学校教育、工程技术、医疗卫生、质量管理、生产管理等多个领域,并根据Excel的主要功能分册地整理成书。
在丛书编着过程中,“实用为主”的原则贯彻始终,所有案例都遵循实际工作场景和知识点解说紧密结合的主线,抛开一些华而不实、艰难晦涩的高深解法,而将基础理论和解决方案寓于寻常技巧之中,让读者能得其用、明其理,以期实现为更多的人解决更多问题的简单愿景。
寻者
感谢您选择“Excel 疑难千寻千解”丛书之《Excel 2010 VBA编程与实践》!
Excel 2010具有强大的运算与分析能力。从Excel 2007开始,改进的功能区使操作更直观、更快捷,实现了质的飞跃。不过需要进一步提升效率及实现自动化则仅靠功能区的选单功能是远远不够的,正因如此,微软公司在Excel中引进了VBA程式,且首次在Excel中升级VBA到 7.0版本。通过VBA可以让複杂的报表简单化,且可以让部分操作全自动完成,十倍或者百倍的制表效率成为可能。
丛书介绍
“Excel 疑难千寻千解”丛书是由Excel技巧网的负责人、微软最有价值专家(MVP)黄朝阳先生策划并组织编写的一套系列书籍。
Excel技巧网旨在重点推广Excel 2010及今后更高版本的套用,并为广大的Excel爱好者提供一个内容充实、分类清晰、经典实用、精彩纷呈、互惠学习、友好交流的平台。社区成立不久便吸引了众多微软MVP和有志于推广电子表格套用技术的高手驻足,长期为网友免费解答疑难问题,并勤于将精彩的答疑帖子按其所涉及的知识和套用两个维度,整理成为原创技术文章。
社区设有讨论、文章、资源三大技术专区,并按照Excel的功能归属将主题划分为基础套用、数据透视表、条件格式、函式与公式、图表与图形、VBA、SQL in Excel、综合套用等方面,本丛书的各读本正是基于相近的主题分类。
本丛书由黄朝阳、王建发、陈国良等微软MVP以及罗刚君、荣胜军、李术彬、林盘生、陈树青、章兰新等多位社区资深版主联手打造,将来还将邀请更多高级会员加盟参与丛书其他读本的创作。其中《Excel 2010操作与技巧》、《Excel 2010函式与公式》、《Excel 2010 VBA编程与实践》已先于第一批出版,近期还将陆续推出《Excel 2010图表与图形》、《SQL in Excel 2010》等其他读本。
得益于多年来在社区答疑中的磨砺,作者们将丰富的实战经验付诸笔端,精心设计了上千案例,将Excel方方面面的知识点融入其中。每个案例都採用一般用户遇到疑难时最可能的提问方式和套用场景对问题进行描述,提供具有针对性的解决方案和详尽的操作步骤,并配合以原理分析和知识扩展环节,既授人以鱼,又授人以渔。丛书採用“疑难”加“知识点”的特色目录索引,方便读者根据需要快速地查找。对于渴望学习和掌握新知识的Excel用户来说,与其千百次地找寻问题答案,不如静心地读此丛书一卷。
读者对象
本书使用Microsoft Office Excel 2010界面进行编写,但是在编写过程中作者特意注重程式的通用性,确保每个案例的解决方案都通用于Excel 2003、2007和2010。而且为了方便读者,随书光碟中主要有两种格式的案例档案,包括xls格式和xlsm格式,如果是载入宏则包括xla格式和xlam格式。不管读者使用Excel 2003、2007还是2010都可以直接使用,不需要转换,也不需要修改代码就可以顺利的在多版中使用本书的所有案例。
本书通过250个案例和1个大型综合套用展示VBA编程技巧,适合所有办公制表人士,特别是需要提升工作效率及需要深入研究VBA者学习之用。如果您没有VBA基础,那幺本书可以为您解决工作中的疑难。书中对常见问题有一个或者多个解决方案,并辅以解题思路与原理分析,读者可以通过书中的现有案例进行拓展,解决更多的类似问题。而对于已有VBA基础者,则可以学习本书的解题思路与代码防错技术、代码最佳化之道。本书的案例涉及基础套用、查找引用、数据处理、报表列印、函式开发、档案目录、图表设计、图形对象、窗体控制项、外挂程式开发、代码封装和在工资管理系统等诸多方面,可以全方位的提升VBA编程的功底,让您将VBA理论投入到工作中转换成效率。
阅读指南
本书包括11章,涉及制表的每个方面。前10章分别为基础理论篇、查找引用篇、数据处理篇、报表列印篇、函式开发篇、档案目录篇、图表设计篇、图形对象篇、窗体控制项篇、外挂程式开发篇,每章有数十个案例,且为了让读者能学以致用,每章提供3个思考与练习题。最后一章为综合套用,讲述通过VBA开发工资管理系统的思路。
详细的章节内容如下:
第1章:基础理论篇
本章包括5个小节——快速获取帮助、程式防错要点、代码最佳化之道、提升代码的兼容性。主要介绍VBA编程的一些基础知识、代码的纠错与最佳化,不过是以案例形式呈现出来,通过实际的套用让理论描述更有说服力。
第2章:查找引用篇
本章包括4个小节——本表查找、跨表及多表查找、档案查找与转换和图片查找与引用。主要讲述数据引用、图片引用的经典案例。其中对于查找提供了多种思路,儘量展示效率最高且具有容错性的代码与技巧。本章是全书的三大重点之一,通过大量的实例传授瞬间查找数据的技巧。
第3章:数据处理篇
本例包括7个小节——定位的技巧、数据处理及格式转换、单元格合併技巧、报表合併与拆分、单元格颜色的综合套用、重複数据处理和数据透视。本章是第二个重点,全面阐述VBA对数据处理的技巧。Excel本身具备数据处理的功能,而利用VBA可以大大提升数据处理的速度,本章属于办公制表人员必学範畴。
第4章:报表列印篇
本章包括2个小节——列印设定和特殊列印格式设计。主要讲述与列印或者列印格式设定方面的疑难处理技巧,包括工资条设计、分页小计、批量列印和底端标题等等相当常用的一些疑难处理。
第5章:函式开发篇
本例包括3个小节——自定义函式基础、开发自定义函式和自定义函式的管理。本章阐述开发函式的技巧与函式的管理思路,从而强化Excel的运算能力。
第6章:档案目录篇
本章包括2个小节——档案管理和目录管理。本章内容与制表本身无直接关係,但可以对档案和资料夹进行删除、备份、创建、转换、命名等等操作,对工作大有裨益。
第7章:图表设计篇
本章包括2个小节——图表编辑和多表管理。设计基本的图表比较适合手工操作,而对于图表或者图表中的标籤批量操作时,VBA就有用武之地了,可使操作效率大大提升。
第8章:图形对象篇
本章包括3个小节——图形对象的基本操作、批注的高级套用和图形对象综合套用。与图形对象相关的高级套用不适合手工操作,本章通过21个案例演示VBA操作图形对象的技巧,包括导入、导出、引用、浏览等等操作。
第9章:窗体控制项篇
本章包括4个小节——ActiveX控制项套用、窗体设计技巧、窗体与工作表之数据互动和开发动画窗体。其中重点在于窗体与工作表数据互动的案例演示,通过窗体处理数据并导入、导出,可以实现很多Excel本身无法完成的功能。最后对窗体的美化技巧提供6种思路。
第10章:外挂程式开发篇
本章包括3个小节——订製选单与工具列、开发通用外挂程式和封装DLL外挂程式。本章是本书第三个重点章节,通过案例展示VBA开发外挂程式的强大功能,并附带开发功能区的步骤与技巧,使读者有中文功能区的开发有进一步认识。通过本章的案例,读得可以开发自己需要的外挂程式,包括将外挂程式封装,从而实现代码隐藏。
第11章:工资管理系统
本章讲述利用VBA开发一个中型系统的过程与思路,属于VBA的综合套用。
本书约定
为了熟悉本书对滑鼠操作、键盘指令等描述方式,从而更顺畅地阅读本书,您有必要了解以下内容:
选单
本书中表示连续多个选单指令时,使用右箭头“→”进行连线,例如:单击“档案”选项卡→“选项”→“公式”,表示依次单击“档案”选项卡的“选项”按钮,在弹出的“Excel 选项”对话框中单击“公式”选项卡。
滑鼠
本书中表示滑鼠操作时,均使用标準的表示方法。其中“指向”表示将滑鼠指针移到对象之上,且不单击任何按钮;而“单击”特指利用滑鼠左键单击目标;“右键单击”表示利用滑鼠的右键单击对象;“双击”表示快速按下滑鼠左键两次;“拖放”则表示按下滑鼠左键不鬆开的状态下拖动滑鼠,拖到目标区域后再放开滑鼠左键。
键盘
本书中表示按键时使用尖括弧“【】”号包含,例如“按【Ctrl+Shift+Enter】组合键”表示同时按下键盘上的Ctrl键、Shift键和Enter键。其他按键的表示方法相同,如果需要特殊操作方法,会在相关内容中详细说明。
代码
本书的VBA代码均不区分大小写,在编写代码可以随意,但代码录入到代码视窗后,VBA会将代码自动转换成首字元大写形式,带引号的字元串和变数名除外。
本书特点
本书与市场上其他Excel书籍有很大的不同,文体结构新颖,案例贴近实际,讲解深入透彻,表现为以下几个方面:
场景式提问
本书从成千上万网友提问中精心归纳、提炼出各类问题,并还原为贴近真实的求助语言及案例,方便读者搜寻与实际工作相似问题。
增强式目录
本书总体章节划分以“基础理论→分类套用→综合实战”为主线,将VBA的主要知识点和经典解决方案设计到每个疑难的案例中,并採用“疑难”加“知识点”的特色目录索引,方便读者根据需要翻阅和查找。
开创式结构
本书案例中的“解决方案”环节是对问题的思路解说,结合“操作方法”环节中的步骤让人更容易理解。“原理分析”环节则主要解释所使用代码的工作原理。“知识扩展”环节包括与案例相关的知识点补充,可拓展读者的视野,同时也有利于理解案例本身的解决思路。
本书的代码还有两个显着的特点,有别于市场上其它同类书籍,即处处确保代码的防错与通用性。
防错
防错是指编写代码时儘可能考虑所有可能出错的情况,并在代码中加以防範。或者根据不同潜在的运行环境提供不同的执行方案,让代码可以多种情况下顺利执行,而不会弹出错误提示框导致程式中断。
通用
通用性是指代码可以适应不同环境。环境是指软体的不同版本,例如WIN XP、VISTA和WIN 7作业系统都可以顺序执行本书所有案例的代码,Excel 2003、2007和2010版本的用户也可以顺利执行每个案例的代码,且不需要做任何修改。
环境还包括表格的区域。本书儘可能不採用硬编码引用工作表对象和区域地址,而採用具备自动适应变化的代码作为数据处理的引用源,从而使代码适应不同用户或虽是同一用户但工作表数据区域变化时皆可使用。例如Range("A1:D10")引用区域属于硬编码,当数据区域变化后,代码必须修改才可执行;而採用ActiveSheet.UsedRange或者ActiveCell.CurrentRegion两种方法引用区域则可以适应数据区域的增减变化,从而提升代码的通用性。
学习方法
本书是VBA编程的案例集粹,其宗旨在于为读者解决实际工作的疑难,以及对同类的问题提供解决思路。
书中各章节的结构虽然是从易到难,但章节之间相互独立,即可以从任意章节开始学习,不需要遵照从前至后的顺序阅读。
本书每个案例中的“解决方案”部分表示对问题的思路解说,配合“操作方法”中的步骤和代码更容易理解。“原理分析”部分则主要包括两方面内容:代码中部分方法或者语句的语法解释,以及解决本疑难的理论依据。“知识扩展”部分包括与本例问题或者本代码相关的知识补充,用于扩展读者的知识範围,同时也有利于理解本例代码的思路。
本书是“Excel疑难千寻千解”丛书之一,可为读者解决VBA编程的疑难,同时也是作者罗刚君的另一本着作《Excel VBA程式开发自学宝典》的升级版与配套教材。《Excel VBA程式开发自学宝典》重点在于讲述VBA编程的基础理论和语法,并配有“Excel百宝箱”大型外挂程式的设计过程详解,该书适合完全没有VBA基础者学习,而本书是该书配套的案例,可以使读者将理论付诸实践,解决实际工作中的疑难及开发属于自己的外挂程式。
售后服务
本书由Excel技巧网(技术社区)出品,读者在阅读中有任何疑难或者建议、BUG反馈等都可以到社区发贴,包括求助、交流,也可以在社区下载与本书相关的文档。社区为本丛书开闢了一个专门的版面用于编读往来,同时本书也配备了专属的QQ群作为售后服务的联繫方式,群号公布于上述网址,读者可以申请到群中与作者面对面交流。
购买本书除可以获取随书光碟中的所有案例档案外,还有两项服务,包括实用外挂程式和Excel百宝箱。
实用外挂程式是指随书光碟中的8个外挂程式,位于“赠品”资料夹中。8个外挂程式可以实现8个功能,同时学习外挂程式的开发思路。每个外挂程式附有原始码,每句代码都有含义注释,且配有使用说明。外挂程式名称如下:
1.二级选单
可以像数据有效性一样产生下拉列表,但更强大,可以产生二级选单。
2.批注替换工具
可以批量替换批注文本的工具,且可设定区分大小写与匹配方式。
3.选项选单设计
通它既可控制某些视图对象的显示与隐藏,又可学习选项选单的设计思路。
4.一键录入代码
用于提升编写代码的速度与準确度,单击选单即可录入常见代码。
5.複选框管理
可以批量生成複选框,也可以批量删除、勾选複选框,功能强大,操作方便。
6.历史数据记录器
将指定区域中每一个单元格的修改都记录在案备查,且同时记录修改时间。
7.增强型视图控制
是内置的视图工具的强化版本,更重要的是可以学习如何开发发功能区。
8.自定义函式封装
自定义函式Connect是&运算的强化版本,功能强大,且配备代码封装教材。
除以上服务外,如果读者同时购买本书和《Excel VBA程式开发自学宝典》,那幺额外赠送三个实用外挂程式和一个百宝箱8.0正式版。外挂程式包括:
1.隐藏磁碟
可以将指定的磁碟隐藏起来,并禁用使用,从而确保档案安全。
2.隐藏错误值
可以将工作表中的所有错误值在隐藏与显示之间瞬间切换。
3.工作簿标籤
在选单产生工作簿标籤的外挂程式,让工作簿切换更方便、快捷。
百宝箱8.0是利用VBA开发的大型外挂程式,百宝箱正版包括105个功能,可以大大强化Excel的功能,原价50元销售。对于读者可以免费赠送,可进入作者QQ群后向作者免费申请。
本书由黄朝阳策划,罗刚君和章兰新负责编写。其中第1、2、3、4、8、9、10和11章由罗刚君编写;第5、6、7章由章兰新编写,最后由罗刚君、黄朝阳完成统稿。
编着者
2010年8月28日
------------------------------------------------------------------------------------------------------------------------
申明:本书的所有案例和讲解都允许作为视频或面授培训的教材,但使用者必须遵循约定,在培训教材的明显处注明“全部(或部分)案例出自‘Excel疑难千寻千解’丛书之《Excel 2010 VBA编程与实践》”的字样,以确保作者着作权不受侵犯。
目 录
第1章 基础理论 1
1.1 快速获取帮助 1
疑难1 如何获取所有控制项的属性及属性值 1
前期绑定与后期绑定 4
疑难2 部分对象在输入时没有成员列表提示,如何解决 5
没有成员列表的对象 6
疑难3 如何找出错误语句及获取错误原因并传送到开发者信箱 6
利用ShellExecute函式调用程式的方式 8
1.2 程式防错要点 8
疑难4 程式出错有哪些原因 9
常见错误分析 9
疑难5 如何获取VBA所有运行时错误的详细说明 10
通过Error函式获取错误信息 12
疑难6 如何在执行完毕后报告出错次数及原因 13
捕捉所有错误信息 14
疑难7 如何开发完善的程式 15
数组区域对VBA程式的影响 17
疑难8 防错语句在程式或者函式中套用有哪些优势 17
利用Err.Number属性判断错误类型 19
1.3 代码最佳化之道 19
疑难9 如何最佳化过程“隐藏偶数行” 19
关闭ScreenUpdating提升程式效率 20
疑难10 如何最佳化过程“设定字型属性” 21
利用With简化对象引用 22
疑难11 如何最佳化过程“隔三行求和” 22
减少单元格的写入次数提升程式效率 23
疑难12 如何最佳化过程“B列所有图片右移” 23
有针对性地使用Select方法 24
疑难13 如何最佳化过程“建工作表目录” 25
VBA中数组的作用 26
疑难14 如何最佳化过程“成绩评语” 26
区分适合置于循环体中的语句 27
疑难15 如何最佳化过程“删除空单元格所在行” 27
不用循环而选择多个符合条件的单元格 28
疑难16 如何最佳化过程“批量修改批注背景色” 28
区分父对象与子对象 29
疑难17 如何最佳化过程“隔一行插入一行” 30
计算模式对程式效率的影响 31
疑难18 如何最佳化过程“获取外网IP位址” 31
使用变数的条件 32
1.4 提升代码的兼容性 32
疑难19 程式的兼容性体现在哪些方面 33
作业系统对VBA的影响 33
疑难20 如何让程式适应不确定对象 34
使用动态区域引用让代码具有更强的通用性 37
疑难21 如何让程式兼容Excel多版本 37
识别Excel的版本号 39
疑难22 如何让程式兼容英文和中文系统 40
利用API函式识别简体、繁体中文与英文 41
疑难23 如何让程式兼容简体与繁体中文 41
让代码适应简体与繁体系统 42
1.5 练习与思考 42
第2章 查找引用 44
2.1 本表查找 44
疑难24 如何查找不及格学生姓名并突出显示 44
利用Union方法合併多区域 46
疑难25 如何一次性罗列表中三省员工的姓名 47
Find方法的使用技巧 49
疑难26 如何在输入时逐步查找 50
通过KeyUp事件自动执行查询 52
疑难27 如何按指定的格式查找 53
FindFormat的使用技巧 54
疑难28 如何实现字型格式替换 54
替换格式的条件 55
疑难29 如何查找所有“#”并标为上标 56
区分上标、下标的套用对象 57
疑难30 如何找出还款时间超过一年及未还款的客户信息 57
日期函式Datedif的特性 59
疑难31 可以将查找到的所有数据串连并写入剪贴簿中吗 59
引用“Microsoft Forms 2.0 Object Library”的两种方法 60
疑难32 可以创建一个工具列来方便查找吗 61
设定lookat参数实现模糊查找 63
疑难33 如何快速罗列出每个产品最新报价 63
Collection对象的套用技巧 65
疑难34 如何在具有合併单元格的区域中多条件逐步查找 65
通过“MergeArea”属性返回合併区域 67
疑难35 如何查找成绩并分批发邮件 67
VBA中发编写邮件正文时的换行符的表示法 68
2.2 跨表及多表查找 69
疑难36 如何引用数据表创建多级下拉选单 69
“ActionControl”对象的功能与限制 72
疑难37 如何将所有表中查找的完成数汇总到总表 73
利用SpecialCells定位实现快速查找 74
疑难38 在窗体中罗列每月产量冠军名单 74
不採用循环,一次性找出最大值所在行 76
疑难39 如何将具有外部数据引用的单元格转换成值 76
通过“[]”和“’!”定位具有外部连结的公式 77
疑难40 如何让连结到其他表中隐藏单元格的超连结生效 77
通过xlSheetVisible属性切换工作表显示状态 78
疑难41 如何实现多部门电话资料模糊查询 79
Target与Activecell的区别 80
疑难42 如何实现所有未收货款者在状态栏随机显示 80
利用OnTime定时执行程式 82
2.3 档案查找与转换 82
疑难43 如何判断指定档案是否存在 82
利用DIR函式判断档案是否存在 83
疑难44 如何进行深度查找且创建档案目录 84
FileDialog对象的套用 85
疑难45 如何查找并备份所有“3月生产表” 86
CopyFile方法对档案複製 88
疑难46 如何将所有Excel档案转换成XPS或PDF档案 88
利用PrintOut方法将工作錶转换成XPS档案 90
疑难47 如何在网上邻居的共享盘中查找并打开“单价表” 91
利用FileExists方法判断档案是否存在 92
疑难48 如何实现全盘查找“上海滩.MP3”,有则自动翻放 92
播放音乐的三种方式 94
疑难49 如何在网上自动搜寻与当前单元格同名的歌曲并播放 95
利用网页地址索引歌曲并自动播放 96
2.4 图片查找与引用 96
疑难50 如何瞬间删除当前表中所有图片 96
DrawingObjects与Shape对象的区别 97
疑难51 可以将签名图片複製到表中所有签名处吗 97
複制图形对象与複製数据的区别 98
Selection代表什幺 99
疑难52 如何像vlookup引用数据一样引用图片 99
对图片设定公式引用其他图片 101
疑难53 如何通过窗体预览指定目录中的所有图片 101
通过LoadPicture函式载入图片 103
2.5 练习与思考 103
第3章 数据处理 104
3.1 定位的技巧 104
疑难54 如何选择当前表0~100之外的数据 104
使用定位技术减少循环语句的循环次数 105
疑难55 如何定位奇数行 105
MOD配合SpecialCells定位奇数行 106
疑难56 可以瞬间定位并隐藏所有错误值吗 107
通过SpecialCells定位错误值 108
疑难57 如何在输入数据时自动定位下一行的目标单元格 109
限制删除单元格的数据时不触发工作表的Change事件 110
疑难58 可以将标题以外的区域转换成“万”为单位吗 110
VBA中如何处理双引号 111
疑难59 如何定位当前表最大值和最小值 112
调用工作表函式并配合Find方法查找最大值 113
疑难60 能定位并标识高于平均值的单元格吗 113
VBA中数字、汉字的大小关係 115
疑难61 如何反向选择工作表区域 115
辅助区的重要性 116
3.2 数据处理及格式转换 116
疑难62 如何将单词在大写、小写与首字母大写间任意切换 116
利用StrConv函式对英文进行大写、小写和首字母大写转换 117
疑难63 如何将二维的入库錶转换成一维排版方式 118
利用数组提升代码执行效率 119
疑难64 能否不用循环对选区进行横向与纵向汇总 120
“R1C1”引用方式的优点 121
疑难65 如何批量地将字元串中的字母、数字和汉字分离出来 122
利用Like运算符区别汉字、数字和字母 123
疑难66 可以将表达式转换成运算结果吗 124
通过Evaluate计算表达式 125
疑难67 如何快速填充所有空单元格 125
利用Intersect引用区域提升代码通用性 126
疑难68 如何将产品销售地区瞬间转换成下拉列表 126
利用代码设定有效性序列 127
疑难69 数据有效性可以设定三级关联下拉列表吗 128
利用Dictionary对象获取唯一值 130
疑难70 可以对职员信息表按学历排序吗 130
新旧版本中Sort的差异 131
疑难71 可以不打开工作簿而提取其数据吗 132
VBA中调用公式实现从未打开的工作表中取值 133
疑难72 如何保护所有公式不能修改 134
切换Locked 属性实现公式保护 135
疑难73 如何实现金额数据分解 135
MID取文本的特点 137
疑难74 VBA可以破解工作表密码吗 137
表的分类 138
疑难75 如何对分段编号进行合併转换 138
减少数组变数空间分配次数的方法 140
疑难76 如何将5个大小相同选区的数据互换 141
Areas与CurrentRegion的区别 142
疑难77 如何取得1000之内的质数 142
质数的特性 143
疑难78 可以生成指定範围的不重複随机数吗 144
Collection对象的优势 145
疑难79 如何利用VBA对工作簿进行减肥 145
正确删除单元格,减少档案体积 146
疑难80 如何让数字在文本与数值之间快速切换 147
在文本与数值间切换的VBA思路 148
疑难81 如何将“/”分隔的数据进行汇总 149
以“/”为分隔设定取其左右字元的思路最佳化 150
疑难82 可以对指定区域进行自动更正吗 150
利用Replace方法实现限定区域的自动更正 151
疑难83 可以对包括“星期”的所有工作表同时添加公式吗 151
VBA在单表和多表中输入公式的区别 152
疑难84 在VBA中如何控制字元朗读 153
利用Speech朗读字元 153
疑难85 能实现贴上数据时跳过隐藏区吗 154
如何确定单元格是否隐藏 156
疑难86 如何对相同值进行标识着色 156
疑难87 如何根据工资计算零钞数量 159
获取选区第一列及已用区域的交集 160
疑难88 如何批量实现区域数据真正四捨五入 161
通过round解决数据显示的假象 162
疑难89 如何最佳化具有大量公式引用的数据计算 163
公式与VBA在计算上的区别 164
ClearContents与Clear的区别 164
3.3 单元格合併技巧 164
疑难90 可以在表格中合併同类项吗 165
利用DisplayAlerts属性关闭合併单元格的提示及加快执行速度 166
疑难91 如何实现按产品合併产量数据表 166
利用变数暂存数据,代替辅助区 168
疑难92 如何实现合併时保留所有数据,而拆分时可以还原 168
看不见的特殊字元的套用 171
疑难93 可以选择当前表所有合併单元格吗 171
定位合併单元格 172
疑难94 如何取消所有合併区域并且对所有单元格填充数据 172
合併区域的赋值方式 174
疑难95 合併单元格后仍然可以正常引用区域中的所有值吗 174
複製合併属性 175
疑难96 如何将指定单元格合併连结到一个选区 175
对一个区域追加连结 177
疑难97 跨页合併单元格可以重新合併从而适应分页列印吗 178
判断合併单元格是否跨页 179
疑难98 可以让合併单元格自动换行吗 180
工作表事件代码与普通过程的区别 181
3.4 报表合併与拆分 181
疑难99 如何合併所有工作表到一个表中 182
让複製数据时既去除公式又不影响数值的显示状态 183
疑难100 如何实现多表合併汇总 184
利用相对引用公式批量合併数据,避免使用循环 185
疑难101 如何将多个工作簿中的所有工作表合併到一个工作表中 186
通过禁用工作簿重算提升代码效率 189
疑难102 如何将多个工作簿数据合併到一个工作簿中 189
利用变数作为辅助进行条件判断 193
疑难103 如何实现报表拆分 193
利用複製格式和複製数值实现完美複製,避免複製后显示错误 195
疑难104 如何将工作簿中每个工作錶转换为独立工作表 197
根据版本号决定档案格式 198
3.5 单元格颜色的综合套用 199
疑难105 Excel不同版本在颜色处理方面有分别吗 199
不同版本中颜色差异对程式的影响 200
疑难106 可以对Excel 2010的按颜色筛选再做扩展吗 201
CurrentRegion与Usedrange对程式的影响 204
疑难107 如何让按颜色排序可以在Excel 多版本间通用 204
借用辅助和调用老版本的Sort功能提升程式的通用性 206
疑难108 如何将颜色分类重排且通用于Excel多个版本 206
将颜色属性转换成数据,辅助程式执行 208
疑难109 可以按颜色对选区数据分类汇总吗 208
修改数据源与修改颜色在VBA事件中的差异 211
疑难110 如何用函式对数据背景和字型按颜色汇总 212
通过Volatile让函式声明为易失性函式 213
3.6 重複数据处理 213
疑难111 如何清空重複值单元格并标识 214
Countif函式在去重複值中的套用 215
Countif函式的限制 216
疑难112 可以对重複出现的数据进行圈释吗 216
利用CircleInvalid对单元格加圈,以及CircleInvalid的限制 217
疑难113 如何筛选唯一值 218
使用错误处理语句配合Collection取唯一值 219
疑难114 可以在输入重複值时提示用户吗 219
通过EnableEvents提高程式的执行效率 220
疑难115 如何对两列数据提取相同项与不同项 221
利用Transpose函式实现区域转数组 222
疑难116 如何将多行多列相同者保留最后一个数据 223
双层Transpose配套Join实现横向区域转字元串 224
3.7 数据透视 224
疑难117 如何按职务或部门进行工资数据的透视分析 225
利用Excel 2003的透视表代码提升程式兼容性 226
疑难118 如何实现多重数据透视 227
利用Array嵌套创建多重透视 228
疑难119 如何实现同时透视多工作簿中的多工作表数据 229
解决VBA创建透视表名称冲突的两种方法 230
3.8 练习与思考 231
第4章 报表列印 232
4.1 列印设定 232
疑难120 如何一次性设定“总表”以外工作表的页脚 232
选择工作表数量对页脚的影响 233
疑难121 如何设定所有工作表的已用区域为列印区域 233
设定列印区域对数据列印的影响 234
疑难122 可以记录工作簿的列印次数吗 235
借用档案自定义属性记录列印次数 235
4.2 特殊列印格式设计 236
疑难123 如何设计工资条列印格式 237
借用辅助列提升程式的容错性 240
疑难124 如何列印工资卡 240
引用普通工作簿和载入宏工作簿的区别 243
疑难125 VBA可以实现对工作表分页小计吗 243
利用宏表函式Get.Document(50)获取工作表页数 246
疑难126 如何同时列印顶端标题和底端标题行 246
计算第一个分页符的所在行号 253
疑难127 可以借用图片实现底端标题列印吗 253
Export与API方式将区域转换成图片的差异 255
疑难128 如何製作针式多联印表机列印格式的报表 256
利用HPageBreaks.Add实现手动分页 258
疑难129 如何实现双面列印 259
中断与禁止中断程式 260
疑难130 可以仅仅列印活动单元格所在页吗 260
利用Location计算分页符位置,配合循环判断当前页序号 261
4.3 练习与思考 262
第5章 函式开发 263
5.1 自定义函式基础 263
疑难131 如何开发自定义函式 263
Office版本对自定义函式参数的影响 267
疑难132 函式与参数名规则如何 267
自定义函式命名规则 267
疑难133 自定义函式在不同版本中有何差异 269
颜色对自定义函式的影响 271
5.2 开发自定义函式 271
疑难134 如何对区域内混杂字元串中的数字求和 271
Excel公式对连续“+”的处理方式 273
疑难135 如何分离字元串中的数值、英文和汉字 273
正则表达式在字元处理中的优势 274
疑难136 如何将文本混杂字元串及表达式转换为值 274
正则表达式中数字、汉字的表达方式 276
疑难137 如何按时间段计算汇总金额 277
根据计算对象的规范性决定函式参数的个数 278
疑难138 如何对具有分隔设定的数据分类汇总 279
Split函式产生的数组的特点 280
疑难139 可以取姓名的汉语拼音首字母吗 280
汉字与拼音首字母的对应关係 282
疑难140 超过15位的数字如何求和 282
Excel对数据计算的长度限制 284
疑难141 可以扩展Vlookup函式实现返回多个结果吗 284
利用Find替代Vlookup实现多个数据查找 285
疑难142 如何利用函式创建档案目录 286
自定义函式中如何表示活动单元格 287
疑难143 可以用函式连线记忆体数据和区域中所有文本吗 288
利用ParamArray声明不确定个数的函式参数 290
疑难144 如何根据身份证号码获取出生日期、年龄和性别 290
身份证号码所包含的个人信息 292
疑难145 如何将多个单元格中的人民币数字合併且转为大写金额 293
声明正确的类型最佳化函式效率 294
疑难146 如何计算两个区域的不同项 294
自定义函式对大区域运算的限制 296
疑难147 如何突破Rank函式排名的限制 296
去重複值的3个方法 297
疑难148 如何实现按数据出现次数排序 298
Collection与字典的区别 300
疑难149 可以用一个函式将人民币大小写相互转换吗 300
通过拆分法理解代码 302
疑难150 可以用函式改变引用区域的值吗 303
利用自定义函式修改引用区域的值的两种方法 305
疑难151 如何对两个以逗号分隔的乱序字元串比较异同 306
Split函式嵌套套用从字元串中分别获取品名与数量 307
疑难152 可以利用函式添加数据监控吗 308
借用函式的易失性实现自动执行,类似于工作表事件 309
疑难153 可以让函式的两个参数全是可选参数吗 310
将单个参数声明为可选参数的方法 311
疑难154 可以利用函式批量对工作表命名吗 312
借用类模组将工作簿级事件提升为应用程式级事件 314
疑难155 如何让自定义函式运算结果是一个数组 314
函式返回数组的条件 316
5.3 自定义函式的管理 316
疑难156 如何对自定义函式添加说明 316
通过MacroOptions定义函式的帮助信息 318
疑难157 如何对自定义函式的参数添加帮助 318
借用REGISTER为自定义函式添加参数说明及分类 321
疑难158 可以将载入宏中的自定义函式複製到活动工作簿吗 322
判断用户的设定是否允许访问VBA工程 325
疑难159 如何封装自定义函式,使其代码不可查看 325
利用VB 6.0企业版封装自定义函式 328
5.4 练习与思考 328
第6章 档案目录 329
6.1 档案管理 329
疑难160 可以实现档案双向备份吗 329
利用SaveCopyAs备份档案 330
疑难161 如何让档案使用一次后即自我销毁 331
档案“自杀”的条件 331
疑难162 档案有哪些属性,如何控制它们 332
GetAttr函式搭配and运算符判断档案是否具备某属性 333
疑难163 如何删除指定目录中一年前创建的档案 334
疑难164 可以删除18个月没有使用的档案吗 335
用DATEDIF计算档案闲置时间的技巧 336
疑难165 如何对档案批量重命名 336
获取档案名称的方法 338
疑难166 可以在收藏夹中对当前工作簿创建捷径吗 338
获取收藏夹地址的方法 339
疑难167 文本档案与Excel如何批量转换 341
文本档案与工作表的相互转换 342
疑难168 如何实现将指定档案作为附属档案传送邮件 343
Outlook的前期绑定与后期绑定 344
6.2 目录管理 345
疑难169 如何瞬间删除D糟中所有空资料夹 345
将代表磁碟的字元串转换成磁碟对象的方法 346
疑难170 如何获取C糟以外所有磁碟的档案目录列表 346
通过FSO对象判断某磁碟是否存在 347
疑难171 如何让多版本Excel可以随心所欲选择打开方式 348
将Excel捷径导入“Sendto”资料夹 349
疑难172 如何批量创建以本月每日日期命名的资料夹 350
利用DateSerial的纠错功能计算本月天数 351
6.3 练习与思考 351
第7章 图表设计 352
7.1 图表编辑 352
疑难173 如何利用快捷键对选区创建图表 352
对宏指定组合键的方式及特点 355
疑难174 如何批量修改图表标籤 355
操作图表标籤的条件 359
疑难175 如何批量移位标籤 359
移点阵图表标籤的限制 362
疑难176 如何对图表系列设定条件格式 362
填充图表系列的两种方法 365
7.2 多表管理 366
疑难177 如何将所有图表大小调整一致且对齐 366
图表名称的特点 367
疑难178 如何将所有图錶转换成JPG档案保存到资料夹 368
将图片转换为图片的思路 369
7.3 练习与思考 369
第8章 图形对象 370
8.1 图形对象的基本操作 370
疑难179 可以仅仅删除E列存放的图表以外的图形对象吗 370
通过TopLeftCell和BottomRightCell定点阵图片位置 371
疑难180 如何将工作簿所在路径的图片全部导入工作表 371
Pictures.Insert与Shapes.AddPicture的分别 373
疑难181 如何让所有图形对齐所在单元格左框线 374
通过统一TopLeftCell属性对齐图片 374
疑难182 如何实现所有图片刚好适应所在单元格大小与边距 375
行高与列宽的特点 376
疑难183 如何将选区转换成图片并保存到桌面 377
借用图表中介实现区域转图片 379
8.2 批注的高级套用 379
疑难184 如何利用快捷键在单元格插入当前日期的批注 379
通过设定AutoSize属性使批注框自动调整大小 380
疑难185 如何将指定列的数据批量追加到批注中 381
强制返回选区第一列的3种方法 383
疑难186 如何实现指定区域批量创建历史记录于批注中 383
让代码套用于所有工作簿的方法 386
疑难187 如何批量导入图片到单元格的批注中 386
对批注框设定背景的条件 388
疑难188 可以对批注进行替换吗 388
“Unload Me”、“End”和“Exit Sub”的区别 391
疑难189 如何在所有批注末尾追加当前日期 391
利用Isdate判断批注最后一行是否为日期 392
疑难190 如何批量修改批注的外观 392
声明正确的变数类型及防错 394
疑难191 可以改造默认的插入批注功能吗 394
正确引用右键选单 395
8.3 图形对象综合套用 396
疑难192 可以让图片跟随滑鼠移动吗 396
利用DoEvents函式展示动画过程 398
疑难193 如何创建图片目录与批量插入图片 398
单元格的行高与列宽限制 401
疑难194 如何利用窗体预览图片 402
控制项背景图片的3种显示方式 404
疑难195 VBA中的窗体能否转换成图片保存在工作表中 404
调用API函式调用截图的快捷键 405
疑难196 可以在工作表中导入GIF动画吗 406
播放GIF档案时不能将档案嵌入工作表 408
疑难197 如何实现输入品名时查看当前路径中的同名图片 408
利用API计算图片档案的长与宽 409
疑难198 可以让滑鼠指定图片时放大图片吗 410
利用API函式获取滑鼠指针坐标 413
疑难199 如何实现图片批量导入并自动排版列印 413
利用FSO技术中的Getextensionname获取档案后缀名 417
8.4 练习与思考 417
第9章 窗体控制项 418
9.1 ActiveX控制项套用 418
疑难200 可以利用列表框强化数据有效性吗 418
列表框相较数据有效性的灵活性 420
疑难201 如何利用複合框引用区域的唯一值 421
複合框调用数据的两种方法及各自优势 423
疑难202 利用複合框和列表框实现二级列表 423
MouseMove事件获取列表框的值的技巧 426
9.2 窗体设计技巧 426
疑难203 如何实现利用快捷键启用和关闭窗体 426
KeyPress事件可以检查的按键及例外项目 428
疑难204 如何用一个窗体展现多个不同内容 429
分页显示的两种方法 432
疑难205 如何用一个按钮执行多个功能 433
利用PasswordChar属性隐藏敏感字元 435
疑难206 如何让日期输入器窗体紧跟活动单元格 435
影响窗体Left、Top属性的因素 436
疑难207 如何设计五角星窗体 437
显示五角星窗体的方法 440
疑难208 VBA可以设计彩蛋吗 440
MouseUp事件中Shift参数的作用 442
疑难209 如何通过窗体控制实现工作表隔行插入行 442
通过Shift参数控制Insert方法的单元格移动方向 446
疑难210 如何在窗体中开发右键快捷选单 446
创建自定义选单的基本思路 448
疑难211 窗体可以利用滑鼠自由调整大小吗 449
利用API让窗体可以自由拖动的思路 449
疑难212 在窗体Show状态下可以调整控制项大小吗 450
MouseMove事件中各参数的作用 452
疑难213 在窗体Show状态下如何批量设定控制项格式 452
可修改控制项字型格式的几种对话框 454
疑难214 在窗体Show状态下如何调整控制项位置 455
MouseMove事件中Button参数的套用技巧 456
疑难215 如何检测窗体中文本框的数据有效性 456
对文本框设定数据有效性检验的优势 457
疑难216 如何设计悬浮感应式窗体 458
通过调整边距控制窗体的动态效果 460
疑难217 可否瞬间备份所有窗体 460
VBA工程中的子对象分类 461
疑难218 能否对窗体中所有控制项同步缩放 462
窗体的Zoom属性的特点 464
疑难219 能否通过代码生成窗体及控制项 464
用代码操作代码、窗体和模组的优缺点 466
9.3 窗体与工作表之数据互动 467
疑难220 可以实现多工作表筛选并将结果导入窗体吗 467
列表框的ColumnHeads属性的特点 469
疑难221 多工作表数据输入窗体如何设计 469
利用SetFocus方法控制焦点的转移 472
疑难222 如何开发日曆工具箱 472
Excel对日期计算的限制 476
疑难223 如何实现多条件电话查询 476
“TextBox1_Change”事件与“TextBox1_Exit”事件的异同 478
疑难224 如何开发複选框批量管理工具 478
认识複选框 481
疑难225 如何让窗体控制项自适应工作表数据变化 481
用代码创建新控制项 483
疑难226 可以让列表框具有拖放功能吗 484
控制项拖放相关的事件 485
本例仅支持一次拖放一行数据 486
疑难227 如何开发四则运算自动出题机 486
通过Rnd函式产生指定範围的随机数 488
9.4 开发动画窗体 489
疑难228 如何让窗体中的文本框循环滚动 489
控制动画速度的两种方式 491
疑难229 窗体中可以播放GIF和Flash动画吗 491
Excel播放GIF的原理 493
疑难230 如何让窗体产生百叶窗动画 493
疑难231 如何设计精美框线且带动感的窗体 495
网页设计与VBA 496
疑难232 如何设计动态的启动画面 497
网页动画的基本语法 499
疑难233 如何让窗体中产生跟随滑鼠指针的文字动画 500
VBA设计动画的限制 501
9.5 练习与思考 501
第10章 外挂程式开发 502
10.1 定製选单与工具列、功能区 502
疑难234 如何定製新选单、工具列与功能区 502
载入宏的特性与安装方法 506
疑难235 可以任意组合内置命令吗 507
CommandBars对象的ID参数的作用 508
疑难236 如何改造内置命令的功能 509
修改OnAction属性替换内置功能 510
疑难237 可以提取所有内置图示及其编号吗 511
ActionControl属性的作用 513
疑难238 可利用选单控制分页符、零值和批注的显隐吗 513
Excel不同版本的自启动路径 515
疑难239 如何仅仅利用选单创建工作表目录 516
让一个过程执行多个选单执行多个功能的方法 518
疑难240 如何让选单具有感应功能 518
State属性的特点与套用 520
疑难241 如何让选单和功能区中显示自己的照片 521
控制功能区中图片库分布方式的4个参数 524
疑难242 如何设计可单选与複选的新工具列选单 525
具有单选与複选特效的图示组合 528
10.2 开发通用外挂程式 528
疑难243 如何开发定位工具箱扩展Excel定位的功能 528
Excel定位的限制 533
疑难244 如何开发通用的多区域複製外挂程式 534
疑难245 如何开发单元格批量合併外挂程式 535
操作大面积区域时利用警告框提示用户 538
疑难246 可以利用外挂程式输入常用VBA代码吗 538
计算当前代码行的行号 542
疑难247 如何利用外挂程式删除当前工作簿所有代码 543
ActiveWorkbook与Thisworkbook的分别 544
疑难248 如何利用TreeView控制项打造工作簿浏览器 545
ImageList控制项的特点与作用 547
10.3 封装DLL外挂程式 548
疑难249 如何封装数值与文本互换的DLL外挂程式 548
使用VB 6.0封装Dll的4个重点 554
疑难250 如何设计字元串分离与表达式计算外挂程式 555
利用VB开发功能区的优势 563
10.4 练习与思考 563
第11章 工资管理系统 564