前 言 欢迎使用本书。如果读者要为别人开发Excel工作簿,或者希望发挥Excel的最大功效,那么本书是不错的选择。 本书涵盖的内容 本书主要介绍的是VBA(Visual Basic for Applications),这是一种构建于Excel(和其他Microsoft Office应用程序)中的编程语言。更具体地说,本书将展示如何编写使Excel中各种任务自动化的程序。本书覆盖了从录制简单的宏到创建复杂的、面向用户的应用程序和实用程序等所有内容。 本书并没有涵盖VSTO(Microsoft Visual Studio Tools for Office)中的内容。VSTO是相对较新的技术,它使用了Visual Basic .NET和Microsoft Visual C#。VSTO也可以用于控制Excel和其他Microsoft Office应用程序。 本书的读者对象 本书并不是为Excel的初学者编写的。如果读者对使用Excel没有任何经验,那么最好先阅读笔者编写的另一本书:Excel 2010 Bible,该书全面概括了Excel的所有功能,它是为各个层次的读者服务的。 为了发挥本书的最大功效,读者应该是有一定使用经验的Excel用户。笔者并没有花费太多的时间来讲述基本的"如何做"信息。实际上,本书假设读者已经掌握了如下技能: ●如何创建工作簿、插入工作表、保存文件等 ●如何在工作簿中导航 ●如何使用Excel 2010功能区 ●如何输入公式 ●如何使用Excel的工作表函数 ●如何给单元格和单元格区域命名 ●如何使用基本的Windows功能,例如文件管理方法和剪贴板的使用 如果不知道如何完成上述任务,那么可能会无法完全理解本书所讲述的内容,这说明您可能不太适合阅读本书。如果读者是一个有经验的电子表格用户,只是没有使用过Excel 2010,那么可以直接从第2章开始阅读,这一章简要概述了这个产品提供的功能。 所需的资源 为了充分利用本书的资源,读者需要在计算机上安装Excel 2010程序。尽管很多内容也适用于Excel 2003以及更高版本,但是本书假定读者使用的是Excel 2010版本。尽管Excel 2007和Excel 2010与之前的版本相比已经发生了极大的变化,但是VBA环境却一点也没有发生变化。如果读者开发的应用程序将用在Excel的早期版本上,那么强烈建议不要使用Excel 2010来进行开发工作,而是应该使用目标受众可能使用的最早版本进行开发。 本书内容并不适用于Macintosh计算机上的Excel。只要具备能够运行Windows的计算机系统就已经足够了,但是如果计算机速度快且有很大的内存,那么就更好了。Excel程序很大,在速度慢或内存小的系统上运行Excel将是一件折磨人的事情。 建议使用高分辨率的视频驱动器(1280×1024像素就够用,但1600×1200像素则更好)。为了获得最佳的效果,可以尝试使用双显视器系统并把Excel放在其中一个屏幕上,而把VBE(Visual Basic Editor)编辑器放在另一个屏幕上。读者很快就会喜欢上这种做法。 本书的约定 请花点时间阅读本节内容,这里介绍了本书使用的一些约定。 Excel命令 从Excel 2007开始,这种产品就引入了一个全新的功能,采用了一个没有菜单的用户界面。Excel使用了一个上下文相关的功能区系统来取代原来的菜单系统。顶部的单词(如"插入"、"视图"等)称为"选项卡"。单击某个选项卡,图标的功能区就将显示最适合当前任务的命令。每个图标都有一个名称,通常显示在该图标旁边或下方。图标是按组排列的,组的名称出现在图标下方。 本书约定:先指明的是选项卡的名称,随后是组的名称,最后是图标的名称。例如,用于处理单元格中自动换行的命令如下所示: "开始"|"对齐方式"|"自动换行" 单击第一个选项卡,即"文件"选项卡,将进入一个名为Backstage的新界面。Backstage窗口的左侧有一列命令。为了指明Backstage命令,先使用单词"文件",然后是命令名。例如,下面的命令将显示"Excel选项"对话框: "文件"|"选项" VBE命令 VBE是在其中使用VBA代码工作的窗口。VBE使用了传统的"菜单和工具栏"界面。下面的命令是指单击"工具"菜单并选中"引用"菜单项: "工具"|"引用" 键盘的约定 需要使用键盘来输入数据。此外,使用键盘还可以直接操作菜单和对话框,如果双手已经放到键盘上,那么这种方法会更方便一些。 输入 应该从键盘输入的内容以粗体显示,例如,在单元格B51输入=SUM(B2:B50)。 更长的输入通常以等宽字体显示在单独一行中。例如,书中可能提示输入以下公式: =VLOOKUP(StockNumber,PriceList,2) VBA代码 本书包含许多VBA代码片段以及完整的过程清单。每个清单以等宽字体显示,每行代码占据单独一行(笔者直接从VBA模块中复制这些清单,并把它们粘贴到了自己的字处理程序中)。为使代码更易于阅读,本书中使用了一个或多个制表符进行缩进。缩进是可选的,但是确实可以帮助限定一起出现的语句。 当本书中的单独一行放不下一行代码时,本书使用了标准的VBA续行符:在一行的结尾,采用空格后跟下划线字符的方式表明代码行延伸到了下一行。例如,下面两行是一条代码语句: If Right(ActiveCell, 1) = "!" Then ActiveCell _ = Left(ActiveCell, Len(ActiveCell) - 1) 可以按照上面的显示把代码输入到两行中,或者删除下划线字符并把代码输入到一行中。 函数、文件名和命名单元格区域 Excel的工作表函数以大写字母显示,如"在单元格C20中输入一个SUM公式"。VBA过程名、属性、方法和对象以等宽字体显示,例如"执行GetTotals过程"。本书经常混合使用大写和小写字母来方便读者阅读这些名称。 本书还使用等宽字体显示文件名和工作表中的命名单元格区域。例如,打开myfile. xlsm,并选择名为data的单元格区域。 鼠标的约定 如果已经在阅读本书,那么读者应能熟练地使用鼠标。本书中使用的有关鼠标的术语都是标准的术语,如"指向"、"单击"、"右击"和"拖放"等。 图标的涵义 纵观全书,本书使用了一些图标来引起读者的注意,告诉读者这些信息非常重要。 新功能使用这些图标指出讨论的内容是Excel 2010的新功能。 注意使用"注意"图标来告诉读者这些信息很重要,也许是有助于读者掌握随后任务的概念,或是有助于理解后面资料的一些基础知识。 提示"提示"图标指出更有效的工作方式或可能不是很明显的方法。 示例下载这些图标表明示例文件可以在下载的示例文件包中找到(示例文件包可以从本书的相应网站www.tupwk.com.cn/downpage上下载)。该示例文件包包含了本书中的很多示例(有关示例文件包的说明,参见前言中的"关于下载的示例文件包"一节)。 警告这些图标表明在操作时不小心可能会导致出现问题。 交叉参考这些图标表明请读者参阅其他章节中关于某个主题的详细信息。 本书的组织结构 本书的章节划分为8个主要部分。 第I部分 Excel基础知识 该部分为全书其他部分搭建了舞台。第1章简单介绍了电子表格软件的发展历史,从而帮助读者弄清Excel是如何顺应潮流而来的。第2章从概念上概述了Excel 2010,对于转换到这个Excel版本的有经验的用户来说,这些内容非常有用。第3章涵盖了有关公式的基本内容,包括一些读者可能还不知道的巧妙技巧。第4章讲述了Excel可以使用的各种文件格式以及可以生成的各种文件格式。 第II部分 Excel应用程序开发 这一部分由两章组成。第5章广泛讨论了电子表格应用程序的概念。第6章讲述了更多的细节信息,并阐述了电子表格应用程序开发过程中通常采用的步骤。 第III部分 理解VBA 第7~11章构成了本书的第III部分,这些章节包含了学习VBA需要了解的所有内容。在这一部分中,介绍了VBA的基本情况,提供了编程的基础知识,并详细介绍了如何开发VBA子例程和函数。第11章包含了大量有用的VBA示例。 第IV部分 操作用户窗体 该部分的4章内容主要介绍了自定义对话框(也称为用户窗体)。第12章介绍了创建自定义用户窗体的一些内置的方法。第13章介绍了用户窗体以及可以使用的各种控件。第14章和第15章则列举了大量的自定义对话框的示例,从基本示例到高级示例。 第V部分 高级编程技巧 该部分涵盖了通常被认为是高级技巧的其他方法。前3章讨论如何开发实用程序以及如何使用VBA处理数据透视表和图表(包括新提供的迷你图)。第19章讲述了事件处理的内容,当某些事件发生时,利用事件处理程序可以自动执行过程。第20章讨论了在与其他应用程序(如Word)交互时所采用的各种技术。第21章通过深入讨论创建加载宏来结束该部分。 第VI部分 开发应用程序 这部分的章节讲述了创建面向用户的应用程序的重要基础内容。第22章讨论了如何修改新的功能区界面。第23章详细介绍了如何修改Excel的快捷菜单。第24章讨论了向应用程序提供在线帮助的几种不同方法。第25章描述了有关开发面向用户的应用程序的基本信息,并详细介绍了应用程序的示例。 第VII部分 其他主题 这部分的6章内容讲述其他一些主题。第26章叙述了有关兼容性方面的信息。第27章则讨论了使用VBA处理文件的各种方法。在第28章中,解释了如何使用VBA来操作诸如用户窗体和模块之类的VB组件。第29章涵盖了类模块的主题。第30章解释了如何处理Excel中的颜色。这部分的最后一章很有用,它回答了有关Excel编程方面的很多常见问题。 第VIII部分 附录 本书包含了4个附录。附录A包含了有关Excel在线资源的一些有用信息。附录B列出了VBA的所有关键字(语句和函数)。附录C解释了VBA的错误代码。附录D描述了在下载的示例文件包中可以找到的文件。 关于下载的示例文件包 下载的示例文件包中有很多有用的示例,这些示例将在本书正文中详细介绍。相比只是阅读书中的文字,通过示例可以学到更多内容。因此,笔者在开发示例方面花费了很多的时间,而不是只把时间花在了编写章节上。 下载的示例文件包中的文件并没有经过压缩,因此可以直接访问它们。 交叉参考有关示例文件包中的所有文件的说明,请参考本书附录D。 关于Power Utility Pak软件 Power Utility Pak软件收集了很多有用的Excel实用程序和许多新的工作表函数。该软件包是用VBA开发的。 在日复一日地使用Excel的过程中,会发现这个产品很有用。读者也可以花费小笔资金购买该产品的完整VBA源代码。研究这些代码是学习一些重要编程技巧的极佳方式。 笔者的网站上还提供了Power Utility Pak软件的30天试用版,下载地址为: 如何使用本书 可以根据自己的需要使用本书。或者从头到尾地阅读本书,或者将本书作为参考手册随时翻阅。由于本书的主题是中高级VBA编程,因此章节的顺序可能不太重要。大部分读者都会进行跳跃式阅读,来选择适合自己的内容。在面对有挑战性的任务时,可以先查阅本书的目录,以便查明书中是否有针对该问题的内容。 读者反馈 笔者非常期待读者的反馈意见,可以通过电子邮件将自己对本书的建议和意见发送至wkservice@vip.163.com。 对于读者提出的某些问题不能给予及时的答复,笔者感到十分抱歉。读者可以把自己的疑问粘贴到某个Excel新闻组中,也许可以得到更好的帮助。可参阅附录A了解详细内容。 还可以访问笔者的网站,上面也有很多与Excel有关的资料。尽管笔者尽力让本书达到完美,但是一些错误还是在所难免,因此在其网站上提供本书的勘误表,网址是: