标题：Excel2010VBA编程与实践
图书信息
书名：Excel 2010 VBA 编程与实践  作者：罗刚君  章兰新  黄朝阳  编著
ISBN：978-7-121-12039-8
出版日期：2010年11月 
定价：69.00元（含光盘1张）
宣传语
壁立千寻敢登攀，寻根究底解疑难！
内 容 简 介
本书是“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