注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计程序设计综合Excel 2003高级VBA编程宝典

Excel 2003高级VBA编程宝典

Excel 2003高级VBA编程宝典

定 价:¥79.00

作 者: (美)John Walkenbach著;盖江南,王勇等译;盖江南译
出版社: 电子工业出版社
丛编项: 宝典丛书
标 签: EXECL

ISBN: 9787121017858 出版时间: 2005-10-01 包装: 胶版纸
开本: 26cm+1光盘 页数: 696 字数:  

内容简介

  本书是专门为在Excel2003中使用VBA编程而编写的一部专著。全书共分8个部分,主要包括Excel2003的基本背景、Excel应用程序开发、VBA编程、用户窗体和高级编程技巧等内容。本书用大量的示例、代码阐述了VBA编程的概念,是学习在Excel2003中用VBA进行编程的最直接和最有效的方法。通过本书的学习,能使读者迅速、轻松、高效地完成各种复杂工作。本书可作为有一定经验的Excel用户学习VBA编程的首选书籍,同时也是高级Excel编程人员深入VBA编程的一本非常不错的参考书。本书前言欢迎使用本书。如果要为别人开发电子表格应用程序,或者希望发挥Excel的最大功效,这本书是不错的选择。本书的目的现在有很多Excel方面的高级书籍,但是本书的特色在于它是一本全面介绍电子表格应用程序开发的书籍。VBA仅仅是一种应用程序开发的组件(尽管这个组件相当大)。Excel有着深厚的底蕴,它有很多潜伏在底层的特性,不为一般的用户所知,可以采用一些新颖的方式使用其中某些广为人知的特性。全世界有数百万人都在使用Excel。笔者在Internet上了解过与电子表格软件有关的新闻组,很明显,人们需要帮助,本书恰恰为他们提供了多方面的帮助。本书的读者对象如果对使用Excel没有任何经验,最好先阅读由电子工业出版社翻译出版的《中文版Excel2003宝典》和《Excel2003公式与函数应用宝典》这两本书,它们全面地概括了Excel的所有特性,读者对象可以是各个级别的Excel用户。为了发挥本书的最大功效,读者应该是有一些使用经验的Excel用户。实际上,本书假设读者已经掌握了以下技能:如何创建工作簿、插入工作表、保存文件等如何操纵工作簿如何使用菜单和快捷菜单如何管理Excel的工具栏如何输入公式如何使用Excel的工作表函数如何命名单元格和单元格区域如何使用基本的特性,比如文件管理方法和剪贴板的使用如果不知道如何完成上述任务,就会发现不能完全理解本书讲述的内容,这说明你可能不太适合阅读这本书,还需要补充一些Excel的相关基础知识。如果读者是曾经使用过Excel2003的有经验的电子表格软件用户,可以直接从第2章开始阅读,这一章简短地概述了这个产品提供的功能。所需的资源为了充分利用本书的资源,需要在计算机上安装Excel程序。虽然本书是针对Excel2003编写的,但是其中很多内容也适用于Excel97以及更高的版本。如果使用的是更早以前的版本(比如Excel5或者Excel95),就不适合阅读这本书。本书中的大部分材料同样也适用于Macintosh机器上的Excel版本。然而,这本书没有用Mac版本进行兼容性测试,所以只能靠你自己了。只要具备能够运行Windows的计算机系统就足够了,但是机器运转速度越快、内存越大当然就更好了。Excel程序很大,在速度慢的系统上或者内存太小的系统上使用Excel非常折磨人。建议使用较高的屏幕分辨率(1024×768像素就够了,如果是1600×1200像素则更好)。使用较低的分辨率也行,但是可能屏幕显得不够大。为了利用本书附带的光盘上的示例,还需要一个光驱。本书的约定花一点时间阅读这一节,这里介绍了本书使用的一些约定。VBA代码本书包含很多VBA代码片段以及完整的过程清单。每个清单都以等宽字体显示,每一行代码占据一行(这里的清单从VBA模块中直接复制而来并粘贴到字处理器中)。为了使得代码更易阅读,通常使用一个或者多个制表符来生成缩进。是否缩进编排是可选的,但是有助于看清楚语句的结构。如果一行代码在本书上的一行中排不下,可以使用标准的VBA换行连接序列。在一行的末尾,用一个空格以及下划线来表示这行代码将扩展到下一行。例如,下面的两行显示的是一行代码:IfRight(ActiveCell,1)="!"ThenActiveCell_=Left(ActiveCell,Len(ActiveCell)-1)可以选择在两行上显示上述代码,如上面所示,也可以不用下划线字符而将其显示在一行上。函数、文件名和命名的单元格区域Excel的工作表函数以大写字母显示,比如“在单元格C20中输入SUM公式”。VBA过程的名称、属性、方法和对象都采用等宽字体显示,比如“执行GetTotals过程”。通常使用大小写混合的形式使得这些名称更容易阅读。图标纵观全书,本书使用一些图标来引起读者的注意,告诉读者这些信息特别重要。使用这个图标指出讨论的内容是Excel2003新增的。如果正在开发将要用在之前的Excel版本的应用程序,就要特别注意这些图标。这里使用“注意”图标告诉读者指示的信息非常重要,也许是有助于帮助读者掌握随后任务的概念,或者是有助于理解后面材料的一些基础知识。“提示”图标指出更便捷的方式或者可能不是很显而易见的方法。这些图标表示示例文件在本书附带的光盘上可以找到(请参阅前言中的“关于附带的光盘”一节)。这个光盘包含了本书介绍的很多示例以及笔者创建的PowerUtilityPak软件的试用版。这些图标表示如果在操作时不小心会导致问题出现。这些图标请读者参阅其他章节中有关某个主题的详细信息。本书的组织结构本书的章节分为8个主要的部分。第1部分基本背景第1章简要介绍电子表格软件的发展历史,从而明白Excel如何适应潮流而来。在第2章中,从概念上概述Excel2003,对于转换到这个Excel版本的有经验的用户来说,这些内容非常有用。在第3章中,讲述有关公式的内容,其中包括一些对读者来说更加巧妙的方法。第4章讲述Excel可以使用的各种文件格式以及它可以生成的各种文件格式。第2部分Excel应用程序开发这一部分由两章组成。第5章广泛地讨论电子表格应用程序的概念。第6章讲述更多的细节信息并阐述电子表格应用程序开发过程中通常要采用的步骤。第3部分理解VBA第7章到第11章构成第3部分,这些章节包括学习VBA必须要了解的内容。在这一部分中,介绍VBA的基本情况、提供编程的基础知识以及如何开发VBA子例程和函数的详细信息。第11章包含大量有用的VBA示例。第4部分用户窗体这部分概括自定义对话框方面的内容(也称之为用户窗体)。第12章介绍创建自定义用户窗体的一些内置的方法。第13章介绍用户窗体以及可以使用的各种控件的内容。第14章和第15章列举很多自定义对话框的例子。第5部分高级编程技巧第5部分讲述通常认为是高级技巧的其他方法。前3章讨论如何开发实用程序以及如何使用VBA处理数据透视表和数据透视图的方法。第19章讲述事件处理的内容,当某些事件发生时,利用这些事件处理程序可以自动执行过程。第20章讨论在与其他应用程序(比如Word)交互时可以采用的各种方法。第21章深入讨论创建加载宏的内容。第6部分开发应用程序这部分的章节讲述创建面向用户的应用程序时的重要基础内容。第22章和第23章提供创建自定义工具栏和菜单的信息。第24章展示为应用程序提供在线帮助的几种不同的方法。在第25章中,叙述有关开发面向用户的应用程序的基本信息,还详细描述了应用程序的例子。第7部分其他主题这部分讲述其他一些主题。第26章叙述有关兼容性方面的信息。在第27章中,讨论使用VBA处理文件的各种方法。在第28章中,解释如何使用VBA处理诸如用户窗体和模块这样的VisualBasic组件。第29章讲述类模块的主题。这部分的最后一章很有用,它回答了有关Excel编程方面的很多常见问题。第8部分附录本书包含4个附录。附录A包含有关在线Excel资源的一些有用信息。附录B列出VBA的所有关键字(语句和函数)。在附录C中解释VBA的错误代码。附录D描述了本书附带的光盘上可以找到的文件。关于附带的光盘本书附带的光盘上包含了很多有用的示例,这些示例在本书的正文中阐述过。相比只是阅读书中的文字,通过示例可以学到更多。因此,笔者在开发光盘上的示例方面花费了更多的时间,而没有写更多的章节。附带光盘中的文件没有经过压缩,因此可以直接从光盘访问这些文件。有关光盘上的每个文件的说明请参阅附录D。关于PowerUtilityPak软件PUP收集了很多有用的Excel实用程序,还包含很多新的工作表函数。笔者专门用VBA开发了这个软件包。在日复一日的使用Excel的过程中,会发现这个产品很有用,建议读者使用这个免费的产品。也可以用象征性的费用购买该产品的完整的VBA源代码。通过这些代码可以学到一些有用的编程技巧。可以从本书附带的光盘上安装30天的PowerUtilityPak试用版。

作者简介

  JohnWalkenbach是享有Mr.Spreadsheet美誉的国际知名作者,是电子表格软件方面的权威,是美国Wiley出版公司出版的Excel系列丛书的总策划和总编辑,并且还是JWalkandAssociatesInc.公司的负责人,这是一家总部在美国圣地亚哥的咨询公司,专门致力于电子表格应用程序的开发。John编写了30多部电子表格软件方面的书籍,其中很多在亚马逊网站上都赢得了5颗星的评价,其中的《Excel2003公式与函数应用宝典》、《中文版Excel2003宝典》和《Excel2003高级VBA编程宝典》已由电子工业出版社翻译出版并畅销至今。他还为各大报刊杂志撰写了300多篇文章,其中不乏大量的知名计算机专业杂志。他还负责维护一个网站——TheSpreadsheetPage(网址是WWW.j-walk.com/ss),并且是PowerUtilityPak的开发者,这是一个MicrosoftExcel加载宏,该加载宏受到了广大使用者的一致好评。John毕业于密苏里大学,并从蒙大拿大学获得了硕士学位和博士学位。

图书目录

第1部分Excel基础知识 1
第1章Excel2003的起源 2
1.1电子表格软件的简短历史 2
1.1.1最初的起源VisiCalc 2
1.1.2Lotus1-2-3 2
1.1.3QuattroPro 5
1.1.4MicrosoftExcel 5
1.2Excel对开发人员的重要性 9
1.3Excel在微软战略中的角色 9
第2章Excel概述 11
2.1关于对象 11
2.2工作簿 12
2.2.1工作表 12
2.2.2图表工作表 13
2.2.3XLM宏工作表 13
2.2.4Excel5/95对话框编辑表 14
2.3Excel的用户界面 14
2.3.1菜单 14
2.3.2快捷菜单 15
2.3.3工具栏 15
2.3.4对话框 16
2.3.5拖放 16
2.3.6键盘快捷键 17
2.3.7智能标记 17
2.3.8任务窗格 17
2.4数据录入 18
2.5公式.函数和名称 19
2.6定制屏幕显示 20
2.7选择对象 20
2.8格式 21
2.8.1数字型格式 21
2.8.2样式型格式 21
2.9形状 22
2.10图表 22
2.11宏和编程 23
2.12数据库访问 23
2.12.1工作表数据库 24
2.12.2外部数据库 24
2.13Internet特性 25
2.14XML特性 26
2.15分析工具 26
2.15.1分级显示 26
2.15.2自动的分类汇总 26
2.15.3AnalysisToolPak 26
2.15.4数据透视表 27
2.15.5Solver 28
2.16加载宏 28
2.17兼容性 28
2.18保护选项 28
2.18.1保护公式以防被修改 28
2.18.2保护工作簿的结构 29
2.18.3用密码保护工作簿 30
2.18.4用密码保护VBA代码 30
2.19Excel的“帮助”系统 31
第3章公式的技巧 32
3.1公式简介 32
3.2计算公式 32
3.3单元格和单元格区域引用 33
3.3.1为什么使用不是相对的引用 33
3.3.2R1C1表示法 34
3.3.3引用其他的工作表或者工作簿 35
3.4使用名称 36
3.4.1命名单元格和单元格区域 36
3.4.2将名称应用于现有的引用 36
3.4.3交叉名称 37
3.4.4命名列和行 38
3.4.5名称的作用域 38
3.4.6命名常量 38
3.4.7命名公式 39
3.4.8命名对象 40
3.5公式错误 41
3.6数组公式 41
3.6.1一个数组公式的例子 42
3.6.2数组公式日历 43
3.6.3数组公式的优缺点 43
3.7计数和求和技巧 43
3.7.1使用COUNTIF或者SUMIF函数 44
3.7.2使用数组公式进行计数和求和 44
3.7.3其他计数工具 45
3.8使用日期和时间 46
3.8.1输入日期和时间 46
3.8.2使用1900年之前的日期 46
3.9创建大公式 47
第4章理解Excel的文件 50
4.1启动Excel 50
4.2所支持的电子表格文件格式 51
4.2.1Lotus1-2-3电子表格文件 52
4.2.2QuattroPro电子表格文件 52
4.2.3数据库文件格式 52
4.2.4文本文件格式 53
4.2.5其他文件格式 53
4.3用Excel编写的文件 53
4.3.1XLS文件 54
4.3.2工作区文件 54
4.3.3模板文件 55
4.3.4工具栏文件 55
4.3.5加载宏文件 56
4.4Excel和HTML 56
4.4.1Excel如何使用HTML 56
4.4.2增加难度 57
4.4.3创建交互式的HTML文件 58
4.5导入和导出XML文件 59
4.5.1什么是XML 59
4.5.2使用映射导入XML数据 60
4.5.3将XML数据导入到列表中 62
4.5.4从Excel导出XML数据 63
4.6注册表中的Excel设置 63
4.6.1关于注册表 63
4.6.2Excel的设置 64
第2部分Excel应用程序开发 67
第5章电子表格应用程序的内涵 68
5.1电子表格应用程序 68
5.2开发人员和终端用户 69
5.2.1谁是开发人员 69
5.2.2电子表格应用程序用户的分类 70
5.2.3电子表格应用程序的客户 70
5.3用电子表格应用程序解决问题 71
5.4基本的电子表格应用程序类型 71
5.4.1快捷但质量不高的电子表格应用程序 72
5.4.2自己创作.自己使用的电子表格应用程序 72
5.4.3单用户电子表格应用程序 72
5.4.4意大利面条式电子表格应用程序 73
5.4.5实用电子表格应用程序 73
5.4.6包含工作表函数的加载宏 74
5.4.7单元块预算式电子表格应用程序 74
5.4.8假设分析模型式电子表格应用程序 74
5.4.9数据存储和访问电子表格应用程序 74
5.4.10数据库前端电子表格应用程序 75
5.4.11统包式电子表格应用程序 75
第6章电子表格应用程序开发的基础 76
6.1确定用户需求 76
6.2规划满足用户需求的应用程序 77
6.3确定最合适的用户界面 78
6.3.1创建自定义的对话框 79
6.3.2在工作表上使用ActiveX控件 79
6.3.3自定义菜单 80
6.3.4自定义工具栏 82
6.3.5创建快捷键 83
6.3.6执行开发的成果 83
6.4使自己关心终端用户 84
6.4.1测试电子表格应用程序 84
6.4.2尽量完善电子表格应用程序的安全性 85
6.4.3使得电子表格应用程序比较美观和直观 86
6.4.4创建用户帮助系统 87
6.4.5编制有关开发成果的文档 87
6.4.6将电子表格应用程序分发给用户 87
6.4.7需要的时候更新电子表格应用程序 88
6.5其他开发问题 88
6.5.1用户安装的Excel版本 88
6.5.2语言问题 89
6.5.3系统速度 89
6.5.4视频模式 89
第3部分理解VBA 91
第7章VBA概述 92
7.1基本的背景 92
7.2关于VBA 92
7.2.1对象模型 93
7.2.2VBA与XLM的对比 93
7.3VBA基础知识 94
7.4VisualBasic编辑器概述 96
7.4.1激活VBE 96
7.4.2VBE窗口 97
7.5使用“工程资源浏览器”窗口 98
7.5.1添加新的VBA模块 99
7.5.2删除VBA模块 99
7.5.3导出和导入对象 99
7.6使用“代码”窗口 100
7.6.1最小化和最大化窗口 100
7.6.2存储VBA代码 101
7.6.3输入VBA代码 101
7.7定制VBE环境 106
7.7.1使用“编辑器”选项卡 106
7.7.2使用“编辑器格式”选项卡 108
7.7.3使用“通用”选项卡 109
7.7.4使用“可连接的”选项卡 110
7.8宏录制器 111
7.8.1宏录制器实际记录哪些内容 111
7.8.2相对模式还是绝对模式 112
7.8.3录制选项 115
7.8.4整理已录制的宏 115
7.9关于对象和集合 117
7.9.1对象层次结构 117
7.9.2关于集合 118
7.9.3引用对象 118
7.10属性和方法 119
7.10.1对象的属性 119
7.10.2对象的方法 119
7.11Comment对象示例 121
7.11.1查看有关Comment对象的帮助 121
7.11.2Comment对象的属性 122
7.11.3Comment对象的方法 122
7.11.4Comments集合 123
7.11.5关于Comment属性 123
7.11.6Comment对象中的对象 124
7.11.7确定单元格中是否含有Comment对象 125
7.11.8添加新的Comment对象 125
7.11.9一些有用的应用程序属性 126
7.12Range对象的使用 127
7.12.1Range属性 128
7.12.2Cells属性 129
7.12.3Offset属性 130
7.13关于对象 131
7.13.1基本的理念 131
7.13.2学习有关对象和属性的更多信息 132
第8章VBA编程基础 135
8.1VBA语言元素概览 135
8.2注释 137
8.3变量.数据类型和常量 138
8.3.1定义数据类型 139
8.3.2声明变量 141
8.3.3变量的作用域 142
8.3.4常量的使用 145
8.3.5字符串的使用 146
8.3.6日期的使用 147
8.4赋值语句 148
8.5数组 149
8.5.1声明数组 149
8.5.2声明多维数组 149
8.6对象变量 150
8.7用户定义数据类型 151
8.8内置函数 152
8.9处理对象和集合 154
8.9.1With-EndWith构造 154
8.9.2ForEach-Next构造 155
8.10控制执行 156
8.10.1GoTo语句 157
8.10.2If-Then构造 157
8.10.3SelectCase构造 160
8.10.4指令的循环块 163
第9章VBA的Sub过程 169
9.1关于过程 169
9.1.1声明Sub过程 169
9.1.2过程的作用域 170
9.2执行Sub过程 171
9.2.1用“运行子过程/用户窗体”命令执行过程 172
9.2.2从“宏”对话框执行过程 172
9.2.3用Ctrl键组合执行过程 172
9.2.4从自定义菜单执行过程 173
9.2.5从另一个过程执行过程 175
9.2.6从工具栏按钮执行过程 178
9.2.7通过单击对象执行过程 179
9.2.8当事件发生时执行过程 180
9.2.9从“立即窗口”执行过程 180
9.3向过程传递参数 181
9.4错误处理技术 184
9.4.1捕获错误 184
9.4.2错误处理示例 185
9.5使用Sub过程的实际例子 187
9.5.1目的 187
9.5.2工程需求 188
9.5.3已经了解的信息 188
9.5.4着手处理 188
9.5.5需要了解哪些信息 189
9.5.6初步的录制工作 189
9.5.7初始设置 190
9.5.8代码的编写 191
9.5.9排序过程的编写 192
9.5.10更多测试 195
9.5.11修复问题 195
9.5.12实用程序的可用性 197
9.5.13对工程进行评估 197
第10章创建Function过程 199
10.1Sub过程与Function过程对比 199
10.2为什么创建自定义的函数 199
10.3介绍性的函数示例 200
10.3.1一个自定义函数 200
10.3.2在工作表中使用函数 200
10.3.3在VBA过程中使用函数 201
10.3.4分析自定义函数 202
10.4Function过程 202
10.4.1声明函数 203
10.4.2函数的作用域 203
10.4.3执行Function过程 204
10.5Function过程的参数 205
10.6函数示例 206
10.6.1无参数的函数 206
10.6.2另一个无参数的函数 206
10.6.3接受一个参数的函数 207
10.6.4接受两个参数的函数 209
10.6.5接受数组参数的函数 210
10.6.6接受可选参数的函数 211
10.6.7返回VBA数组的函数 212
10.6.8返回错误值的函数 214
10.6.9接受不定数量的参数的函数 215
10.7模拟Excel的SUM函数 216
10.8调试函数 218
10.9使用“插入函数”对话框 219
10.9.1指定函数类别 220
10.9.2添加函数说明 220
10.10使用加载宏存储自定义的函数 222
10.11使用WindowsAPI 222
10.11.1WindowsAPI示例 223
10.11.2确定Windows目录 223
10.11.3检测Shift键 224
10.11.4了解更多有关API函数的信息 225
第11章VBA编程示例和技巧 226
11.1处理单元格区域 226
11.1.1复制单元格区域 226
11.1.2移动单元格区域 227
11.1.3复制大小可变的单元格区域 228
11.1.4选中或者识别各种类型的单元格区域 229
11.1.5提示输入单元格中的值 230
11.1.6在下一个空单元格内输入一个值 231
11.1.7暂停宏的运行以便获得用户选中的单元格区域 232
11.1.8计算选中的单元格的数目 234
11.1.9确定选中的单元格区域的类型 234
11.1.10有效地遍历选中的单元格区域 235
11.1.11删除所有空行 237
11.1.12确定单元格区域是否包含在另一个单元格区域内 238
11.1.13确定单元格的数据类型 238
11.1.14读写单元格区域 239
11.1.15给单元格区域写值的更好的方法 240
11.1.16传递一维数组中的内容 242
11.1.17将单元格区域传递给Variant类型的数组 242
11.1.18选中单元格区域中的最大值 243
11.1.19选中有某种特殊格式的所有单元格 244
11.2处理工作簿和工作表 245
11.2.1保存所有工作簿 246
11.2.2保存和关闭所有工作簿 246
11.2.3访问工作簿的属性 246
11.2.4同步工作表 247
11.3VBA技巧 248
11.3.1切换布尔类型的属性值 248
11.3.2确定打印的页面的数量 249
11.3.3显示日期和时间 249
11.3.4获得字体列表 250
11.3.5排序数组 251
11.3.6处理一系列文件 252
11.4用在代码中的一些有用的函数 254
11.4.1FileExists函数 254
11.4.2FileNameOnly函数 254
11.4.3PathExists函数 255
11.4.4RangeNameExists函数 255
11.4.5SheetExists函数 255
11.4.6WorkbookIsOpen函数 255
11.4.7检索已经关闭的工作簿中的值 256
11.5一些有用的工作表函数 257
11.5.1返回单元格的格式信息 258
11.5.2显示与保存和打印的文件有关的数据 259
11.5.3理解对象的父亲 259
11.5.4计算值介于两个值之间的单元格数目 260
11.5.5计算单元格区域中可见单元格的数目 261
11.5.6确定行或者列中最后一个非空的单元格 261
11.5.7字符串与模式匹配 263
11.5.8从字符串中提取第n个元素 264
11.5.9多功能的函数 265
11.5.10SHEETOFFSET函数 266
11.5.11返回所有工作表中数据的最大值 266
11.5.12返回没有重复的随机整数元素的数组 267
11.5.13随机化单元格区域 269
11.6WindowsAPI调用 270
11.6.1确定文件的关联性 270
11.6.2确定默认打印机的信息 271
11.6.3确定当前的视频模式 272
11.6.4给应用程序添加声音 273
11.6.5读写注册表 274
第4部分用户窗体 277
第12章多种自定义对话框的方法 278
12.1创建用户窗体之前需要了解的内容 278
12.2使用输入框 278
12.2.1VBA的InputBox函数 278
12.2.2Excel的InputBox函数 280
12.3VBA的MsgBox函数 281
12.4Excel的GetOpenFilename方法 284
12.5Excel的GetSaveAsFilename方法 287
12.6提示输入目录名称 287
12.6.1使用WindowsAPI函数选中目录 288
12.6.2使用FileDialog对象选中目录 290
12.7显示Excel的内置对话框 290
12.7.1使用Dialogs集合 290
12.7.2了解更多与内置对话框有关的信息 292
12.7.3用内置对话框时使用参数 292
12.7.4直接执行菜单项 293
第13章用户窗体概述 294
13.1Excel如何处理自定义对话框 294
13.2插入新的用户窗体 294
13.3往用户窗体上添加控件 295
13.4“工具箱”的控件 296
13.4.1复选框 296
13.4.2组合框 296
13.4.3命令按钮 296
13.4.4框架 296
13.4.5图像 296
13.4.6标签 297
13.4.7列表框 297
13.4.8多页 297
13.4.9选项按钮 297
13.4.10RefEdit 297
13.4.11滚动条 297
13.4.12数值调节钮 297
13.4.13TabStrip 298
13.4.14文本框 298
13.4.15切换按钮 298
13.5调整用户窗体的控件 299
13.6调整控件的属性 300
13.6.1使用“属性”窗口 300
13.6.2共同属性 301
13.6.3更多属性的信息 301
13.6.4适应键盘用户的需求 301
13.7显示和关闭用户窗体 303
13.7.1显示用户窗体 303
13.7.2关闭用户窗体 304
13.7.3关于事件处理程序 305
13.8创建用户窗体示例 306
13.8.1创建用户窗体 306
13.8.2编写代码显示对话框 308
13.8.3测试对话框 308
13.8.4添加事件处理程序 309
13.8.5验证数据的有效性 310
13.8.6完成的对话框作品 311
13.9理解用户窗体的事件 311
13.9.1了解事件 311
13.9.2用户窗体的事件 312
13.9.3数值调节钮的事件 312
13.9.4数值调节钮与文本框配对 314
13.10引用用户窗体的控件 316
13.11自定义“工具箱” 317
13.11.1更改图标或者提示文本 317
13.11.2添加新页 317
13.11.3自定义或者组合控件 317
13.11.4添加新的ActiveX控件 318
13.12创建用户窗体的模板 318
13.13用户窗体检验表 319
第14章用户窗体示例 320
14.1创建用户窗体式菜单 320
14.1.1在用户窗体中使用命令按钮 320
14.1.2在用户窗体中使用列表框 321
14.2从用户窗体选中单元格区域 322
14.3创建欢迎界面 323
14.4禁用用户窗体的关闭按钮 324
14.5改变用户窗体的大小 325
14.6从用户窗体缩放和滚动工作表 326
14.7列表框技巧 328
14.7.1关于列表框控件 328
14.7.2向列表框控件添加条目 329
14.7.3确定选中的条目 332
14.7.4确定选中的列表框中的多个条目 332
14.7.5单个列表框中的多个列表 333
14.7.6列表框条目的转移 334
14.7.7在列表框中移动条目 335
14.7.8使用多列的列表框控件 336
14.7.9使用列表框选中工作表中的行 338
14.7.10使用列表框激活工作表 339
14.8在用户窗体中使用多页控件 341
第15章用户窗体的高级技巧 343
15.1显示进度条 343
15.1.1创建独立的进度条 344
15.1.2使用多页控件显示进度条 346
15.1.3不用多页控件显示进度条 347
15.2创建向导 348
15.2.1为向导设置多页控件 348
15.2.2向向导用户窗体添加按钮 349
15.2.3编写向导按钮的程序 349
15.2.4编写向导中的相关性代码 351
15.2.5用向导执行任务 352
15.3模仿MsgBox函数 353
15.3.1MyMsgBox代码 354
15.3.2如何模仿MsgBox 355
15.3.3在模仿MsgBox函数的过程中使用MyMsgBox函数 356
15.4非模态用户窗体 356
15.5用一个事件处理程序处理多个用户窗体按钮 358
15.6在用户窗体中选择颜色 360
15.7在用户窗体中显示图表 362
15.7.1将图表保存为文件 362
15.7.2使用OWC的ChartSpace控件 363
15.8在用户窗体中显示电子表格 366
15.8.1使得Spreadsheet控件可用 366
15.8.2把Spreadsheet控件添加到用户窗体中 366
15.8.3使用OWCSpreadsheet控件的简单示例 366
15.9复杂的用户窗体EnhancedDataForm 368
15.9.1关于EnhancedDataForm 369
15.9.2安装EnhancedDataForm加载宏 370
15.9.3使用EnhancedDataForm 370
第5部分高级编程技巧 371
第16章用VBA开发Excel实用程序 372
16.1关于Excel实用程序 372
16.2使用VBA开发实用程序 373
16.3如何造就好的实用程序 373
16.4TextTools剖析实用程序 373
16.4.1TextTools的背景 374
16.4.2TextTools的工程目标 374
16.4.3TextTools实用程序的运作机理 375
16.4.4TextTools工作簿 375
16.4.5TextTools实用程序的用户窗体 375
16.4.6ThisWorkbook代码模块 376
16.4.7Module1VBA模块 378
16.4.8UserForm1代码模块 379
16.4.9使得TextTools实用程序更加有效率 380
16.4.10保存TextTools实用程序的设置 381
16.4.11实现撤销操作 382
16.4.12事后分析工程 383
16.4.13理解TextTools实用程序 384
16.5了解有关Excel实用程序的更多内容 384
第17章数据透视表 386
17.1介绍性数据透视表示例 386
17.1.1创建数据透视表 386
17.1.2检查录制的数据透视表代码 388
17.1.3整理录制的数据透视表代码 388
17.2创建更加复杂的数据透视表 389
17.2.1为更加复杂的数据透视表准备的数据 389
17.2.2生成数据透视表的代码 390
17.2.3更复杂的数据透视表的运作机理 392
17.3从外部数据库创建数据透视表 392
17.4创建多个数据透视表 394
17.5修改数据透视表 396
第18章图表 398
18.1关于图表 398
18.1.1图表的位置 398
18.1.2Chart对象模型 399
18.2录制图表宏 400
18.2.1图表生成宏录制器输出 400
18.2.2整理图表生成的宏录制器输出 401
18.3常用的VBA制图方法 402
18.3.1使用VBA激活图表 402
18.3.2使用VBA使得图表处于非活动状态 404
18.3.3确定图表是否处于活动状态 404
18.3.4从ChartObjects或者Charts集合中删除图表 405
18.3.5使用VBA应用图表的格式 405
18.3.6遍历所有图表 406
18.3.7调整ChartObject对象的大小和对齐ChartObject对象 407
18.4更多制图的示例 408
18.4.1在SERIES公式中使用名称 408
18.4.2使用VBA指定图表使用的数据 410
18.4.3使用VBA确定图表中使用的单元格区域 412
18.4.4使用VBA显示图表上的任意的数据标志 415
18.4.5在用户窗体上显示图表 416
18.5理解图表的事件 418
18.5.1使用图表事件的示例 419
18.5.2为嵌入图表启用事件 421
18.5.3在嵌入图表上使用图表事件 423
18.6VBA制图技巧 425
18.6.1在整个页面上打印嵌入图表 425
18.6.2创建静态图表 425
18.6.3用MouseOver事件显示文本 426
18.6.4动态图表 428
18.6.5创建内摆线图表 429
18.6.6创建时钟式图表 430
18.7不使用宏的制图技巧 431
18.7.1使用“自动筛选”特性控制数据系列 431
18.7.2在图表工作表上存储多个图表 433
18.7.3创建自我扩展式的图表 433
18.7.4创建交互式的图表 438
第19章理解Excel的事件 442
19.1Excel可以监视的事件类型 442
19.2应该了解的有关事件的信息 442
19.2.1理解事件的顺序 443
19.2.2在何处放置事件处理程序的过程 443
19.2.3禁用事件 444
19.2.4输入事件处理程序的代码 445
19.2.5使用参数的事件处理程序的过程 446
19.3工作簿级别的事件 447
19.3.1Open事件 448
19.3.2Activate事件 449
19.3.3SheetActivate事件 449
19.3.4NewSheet事件 449
19.3.5BeforeSave事件 449
19.3.6Deactivate事件 450
19.3.7BeforePrint事件 450
19.3.8BeforeClose事件 451
19.4工作表级别的事件 452
19.4.1Change事件 453
19.4.2监视特定的单元格区域的内容是否发生变化 454
19.4.3SelectionChange事件 456
19.4.4BeforeRightClick事件 457
19.5图表事件 457
19.6应用程序事件 459
19.6.1启用应用程序级别的事件 460
19.6.2确定何时打开工作簿 460
19.6.3监视应用程序级别的事件 461
19.7用户窗体事件 462
19.8没有与对象关联的事件 463
19.8.1OnTime事件 463
19.8.2OnKey事件 465
第20章与其他应用程序交互 467
20.1从Excel启动别的应用程序 467
20.1.1使用VBA的Shell函数 467
20.1.2使用Windows的ShellExecuteAPI函数 469
20.2用Excel激活别的应用程序 470
20.2.1使用AppActivate 470
20.2.2激活某个MicrosoftOffice应用程序 471
20.3运行“控制面板”对话框 471
20.4在Excel中使用自动化 472
20.4.1使用Automation处理外部对象 473
20.4.2早期绑定与后期绑定 473
20.4.3后期绑定的简单示例 475
20.4.4从Excel控制Word 476
20.4.5从另一个应用程序控制Excel 479
20.5通过Outlook发送私人的电子邮件 481
20.6使用ADO 482
20.7从Excel发送电子邮件附件 484
20.8使用SendKeys 484
第21章创建和使用加载宏 487
21.1加载宏的概念 487
21.1.1加载宏与标准工作簿的比较 487
21.1.2创建加载宏的原因 488
21.2理解Excel的加载宏管理器 489
21.3创建加载宏 490
21.4加载宏示例 491
21.4.1为加载宏示例设置工作簿 491
21.4.2为加载宏示例测试工作簿 491
21.4.3为加载宏示例添加描述性信息 491
21.4.4创建加载宏 492
21.4.5安装加载宏 493
21.4.6发布加载宏 494
21.4.7修改加载宏 494
21.5对比XLA文件和XLS文件 495
21.5.1XLS和XLA文件大小和结构 495
21.5.2XLA文件的VBA集合成员 495
21.5.3XLS和XLA文件的可见性 496
21.5.4XLS和XLA文件中的工作表和图表工作表 496
21.5.5在加载宏中访问VBA过程 497
21.6用VBA处理加载宏 499
21.6.1理解AddIns集合 499
21.6.2AddIns对象属性 500
21.6.3AddIns对象事件 503
21.7优化加载宏的性能 503
21.7.1最大化加载宏中的代码执行速度 503
21.7.2控制加载宏的文件大小 504
21.8加载宏存在的特殊问题 505
21.8.1确保安装了加载宏 505
21.8.2从加载宏中引用其他的文件 506
21.8.3为加载宏检测使用的Excel版本是否正确 506
第6部分开发应用程序 507
第22章创建自定义工具栏 508
22.1关于命令栏 508
22.2工具栏的处理 508
22.3Excel如何处理工具栏 509
22.3.1保存工具栏 509
22.3.2当工具栏不能正常运行时 510
22.4手动处理工具栏和按钮 510
22.4.1关于命令栏自定义模式 510
22.4.2发布自定义工具栏 513
22.5处理CommandBars集合 515
22.5.1命令栏类型 515
22.5.2列出所有命令栏对象 515
22.5.3创建命令栏 516
22.5.4在VBA中引用命令栏 517
22.5.5使用VBA删除命令栏 517
22.5.6命令栏的属性 518
22.5.7引用命令栏中的控件 522
22.5.8列出命令栏中的控件 523
22.5.9列出所有工具栏上的所有控件 523
22.5.10给命令栏添加控件 525
22.5.11从命令栏中删除控件 525
22.5.12命令栏控件的属性 525
第23章创建自定义菜单 534
23.1关于Excel的菜单栏 534
23.2使用Excel的菜单可以完成哪些任务 534
23.2.1从专业术语角度理解Excel的菜单 535
23.2.2删除Excel菜单元素 536
23.2.3添加Excel菜单元素 536
23.2.4更改Excel菜单元素 536
23.3使用VBA自定义Excel菜单 537
23.3.1列出Excel菜单信息 537
23.3.2往菜单栏添加新的菜单 539
23.3.3从菜单栏中删除菜单 541
23.3.4往菜单添加菜单项 541
23.3.5显示菜单项的快捷键 545
23.3.6修复重新设置了的菜单 546
23.4处理事件的菜单程序设计 547
23.4.1自动添加和删除菜单 547
23.4.2禁用或者隐藏菜单 548
23.4.3处理选中的菜单项 549
23.5创建自定义菜单的简便方法 551
23.6创建“工作表菜单栏”的替代品 553
23.7处理快捷菜单 555
23.7.1往快捷菜单添加菜单项 556
23.7.2从快捷菜单中删除菜单项 557
23.7.3禁用快捷菜单项 557
23.7.4禁用快捷菜单 557
23.7.5重新设置快捷菜单 558
23.7.6创建新的快捷菜单 558
第24章为应用程序提供帮助文档 561
24.1为应用程序提供帮助 561
24.2使用Excel组件的帮助系统 563
24.2.1为帮助系统使用单元格组件 563
24.2.2为帮助系统使用文本框 563
24.2.3使用工作表显示帮助文本 564
24.2.4在用户窗体中显示帮助 565
24.2.5使用“Office助手”显示帮助 567
24.3在用户窗体中模拟“这是什么?”帮助 569
24.4使用HTMLHelp系统 570
24.5将帮助文件与应用程序关联起来 571
24.6将帮助主题与某个VBA函数关联起来 572
24.7显示HTMLHelp文件的其他方法 573
24.7.1使用Help方法 573
24.7.2从消息框中显示帮助 573
24.7.3从输入框中显示帮助 574
第25章开发面向用户的应用程序 575
25.1什么是面向用户的应用程序 575
25.2LoanAmortizationWizard 575
25.2.1使用LoanAmortizationWizard应用程序 575
25.2.2LoanAmortizationWizard的工作簿结构 577
25.2.3LoanAmortizationWizard的运作原理 578
25.2.4增强LoanAmortizationWizard的潜能 581
25.3应用程序开发概念 582
第7部分其他主题 583
第26章兼容性问题 584
26.1什么是兼容性 584
26.2兼容性问题的种类 585
26.3Excel支持的文件格式 585
26.4避免使用新特性 586
26.5能够在Mac机器上运行吗 587
26.6创建国际通用的应用程序 588
26.6.1多语种应用程序 589
26.6.2VBA语言考虑事项 590
26.6.3使用本地属性 590
26.6.4识别系统设置 590
26.6.5日期和时间设置 592
第27章用VBA处理文件 593
27.1执行常见的文件操作 593
27.1.1使用VBA的有关文件的命令 593
27.1.2使用FileSearch对象 595
27.1.3使用FileSystemObject对象 597
27.1.4定位包含特定文本的文件 599
27.2处理文本文件 599
27.2.1打开文本文件 600
27.2.2读文本文件 601
27.2.3写文本文件 601
27.2.4获得文件编号 601
27.2.5确定或者设置文件的位置 601
27.2.6读写文本文件的语句 602
27.3文本文件处理示例 602
27.3.1将数据导入到文本文件中 602
27.3.2将单元格区域导出到文本文件 603
27.3.3将文本文件的内容导入到单元格区域中 604
27.3.4记录Excel日志的用法 605
27.3.5筛选文本文件 606
27.3.6导入多于256列的数据 606
27.3.7导出单元格区域到HTML格式的文件 608
27.3.8导出单元格区域到XML格式的文件 610
第28章处理VB组件 613
28.1IDE概述 613
28.2IDE对象模型 614
28.3显示VBA工程中的所有组件 617
28.4对模块进行更改 618
28.5使用VBA来编写VBA代码 620
28.6在设计时往用户窗体上添加控件 621
28.6.1设计时与运行时对用户窗体处理的比较 622
28.6.2在设计时添加100个命令按钮 623
28.7通过编程创建用户窗体 624
28.7.1简单的运行时用户窗体的示例 624
28.7.2有用的动态用户窗体示例 626
第29章理解类模块 631
29.1什么是类模块 631
29.2创建NumLock类 632
29.2.1插入类模块 632
29.2.2添加VBA代码到类模块中 632
29.2.3使用NumLock类 635
29.3更多有关类模块的信息 636
29.3.1命名对象类 636
29.3.2对对象的属性进行编程 636
29.3.3对对象的方法进行编程 637
29.3.4类模块事件 638
29.4一个CSV文件类 638
29.4.1CSVFileClass类模块的类模块级别的变量 638
29.4.2CSVFileClass类模块的属性过程 639
29.4.3CSVFileClass类模块的方法过程 639
29.4.4使用CSVFileClass对象 641
第30章有关Excel编程的常见问题 643
30.1一般的Excel问题 643
30.1.1为什么Excel有两种宏语言 643
30.1.2需要发布工作簿给仍然使用Excel4的某些人,有办法将动作录制到某个XLM宏中吗 643
30.1.3在Excel97以及更高的版本中还能运行为更早的Excel版本而编写的XLM宏吗 643
30.1.4能够找到将Excel4宏转换为VBA宏的第三方实用程序吗 643
30.1.5能够从Excel4.0XLM宏调用VBA过程吗 643
30.1.6能够自动将Lotus1-2-3或者QuattroPro宏转换为VBA宏吗 644
30.1.7在哪里可以找到VBA代码的示例 644
30.1.8有将Excel应用程序转换成独立的EXE文件的实用程序吗 644
30.1.9如何在单元格中添加一个下拉列表,使得用户可以从这个列表中选择某个值 644
30.1.10如果列表存储在活动工作簿中的另一个工作表内,还可以使用这种下拉列表方法吗 644
30.1.11使用Application.Calculation将计算模式设置为手动.然而,这看来会影响所有的工作簿而不仅仅是活动工作簿 644
30.1.12如何才能增加工作表中的列数 644
30.1.13如何才能增加工作表中的行数 645
30.1.14能改变工作表标签的颜色吗 645
30.1.15能改变工作表标签的字体吗 645
30.1.16能够改变单元格批注的默认字体和颜色吗 645
30.1.17能够在Excel中播放声音吗 645
30.1.18当打开工作簿时,Excel询问是否要更新链接,搜索了所有的公式之后,在这个工作簿中都找不到任何链接,这是bug吗 645
30.1.19每次启动Excel都崩溃 645
30.1.20在页眉如何打印出工作簿的完整路径和文件名 646
30.2有关VisualBasic编辑器的问题 646
30.2.1在Excel95中,VBA模块还在工作簿中.当从Excel97或者更高的版本中打开这个文件时,却看不到这些VBA模块了 646
30.2.2能够使用VBA宏录制器录制所有的宏吗 646
30.2.3Excel95具有“在标记处录制”特性,利用该特性可以从现有宏中的某个特殊位置开始录制宏.这个特性仍然有用吗 646
30.2.4有一些宏比较通用,想让它们在任何时候都能够用,最好采用哪种办法 647
30.2.5找不到“个人宏工作簿”,它在哪里 647
30.2.6用密码锁定了VBA工程,但是却忘记了命名.有什么办法可以解除锁定 647
30.2.7如何编写宏来更改工程的密码 647
30.2.8当插入新的模块时,总是从OptionExplicit代码行开始.这是为什么 647
30.2.9为什么VBA代码以不同的颜色显示?能改变这些颜色吗 647
30.2.10能用VBA代码删除VBA模块吗 647
30.2.11在Excel2000中编写了一个宏,这个宏往VB工程中添加一些VBA代码.当在Excel2003中运行这个宏的时候,就会得到一条消息.这是怎么回事 648
30.2.12如何编写宏来更改用户的宏安全性设置?希望在打开编写的应用程序时避免出现“工作簿中包含宏”消息 648
30.2.13当打开工作簿时,得到标准的宏警告消息.可是,删除了这个工作簿中包含的所有宏.这是病毒吗 648
30.2.14不理解保护工作表时UserInterfaceOnly选项的运作原理 648
30.2.15如何辨别工作簿是否含有宏病毒 648
30.2.16在VBA中使用符号(&)时遇到麻烦.当要连接两个字符串时,就会得到错误消息 648
30.2.17VBA换行连续字符(下划线)不起作用 648
30.2.18删除大量的VBA代码之后,发现XLS文件的大小并没有相应缩减,为什么 649
30.2.19给很多用户发布一个XLS应用程序.在某些机器上,其中的VBA错误处理过程不起作用.为什么 649
30.3过程 649
30.3.1VBA过程和宏之间有什么区别 649
30.3.2什么是过程 649
30.3.3什么是Variant数据类型 649
30.3.4Variant数组和Variant元素构成的数组之间有什么区别 649
30.3.5什么是类型定义字符 650
30.3.6编写了一个VBA函数,当从另一个过程调用它时运行得很好.但是当在工作表公式中使用它时却运行不了.这是怎么回事 650
30.3.7想创建一个根据所键入的数据自动更改单元格格式的过程.例如,如果输入的值大于0,那么单元格的背景颜色就变成红色.这可能做到吗 650
30.3.8“条件格式”特性很有用,但是更喜欢当在单元格中输入数据时执行其他类型的操作 650
30.3.9可以监视其他类型的事件吗 650
30.3.10试着输入了一个事件过程(SubWorkbook_Open),但是当打开工作簿时却没有执行这个过程.这是为什么 651
30.3.11可以为某个特殊的工作簿编写事件过程,但是能够为任意打开的工作簿编写事件过程吗 651
30.3.12对在Excel中创建公式非常熟悉.VBA也使用了同样的机制和逻辑运算符吗 651
30.3.13如何在别的工作簿中执行过程 651
30.3.14使用VBA创建了几个自定义函数.想在工作表公式中使用这些函数,但是发现在函数名称前加上工作簿的名称极其不方便.还有别的办法吗 651
30.3.15希望在每次启动时加载某个特殊的工作簿.还希望自动执行这个工作簿中的某个宏.是不是不大可能做到 652
30.3.16有一个工作簿使用了Workbook_Open过程.有没有办法避免当打开这个工作簿时执行这个过程呢 652
30.3.17VBA过程能够访问没有打开的工作簿中的某个单元格的值吗 652
30.3.18当从VBA关闭工作簿时,如何避免显示“保存文件”的提示 652
30.3.19如何设置才能使得宏每小时运行一次 652
30.3.20如何防止在宏列表中显示某个宏 652
30.3.21可以将图表保存为GIF文件吗 653
30.3.22某个VBA过程中的变量能在其他的VBA过程中使用吗?可以在别的模块中使用另外一个模块中的过程吗?可以在别的工作簿中使用另外一个工作簿中的过程吗 653
30.4函数 653
30.4.1创建了一个自定义的工作表函数.当用“插入函数”对话框访问这种函数时,出现“没有帮助信息”.如何才能使得“插入函数”对话框显示关于这个函数的说明呢 653
30.4.2还能够在“插入函数”对话框中显示出自定义函数的参数帮助信息吗 653
30.4.3自定义工作表函数出现在“插入函数”对话框的“用户定义”类别中.怎么才能使得自定义的函数出现在别的函数类别中呢 653
30.4.4如何创建新的函数类别 654
30.4.5创建了一个将用在工作表公式中的自定义函数.如果用户输入的参数值不合适,怎么才能使得函数返回真正的错误值(#VALUE!) 654
30.4.6如何强制重算使用了自定义工作表函数的公式 654
30.4.7能在VBA代码中使用Excel的内置工作表函数吗 654
30.4.8Excel95不支持WorksheetFunction方法.这意味着编写的Excel2002应用程序不能兼容于Excel95吗 655
30.4.9在VBA代码中能够使用AnalysisToolPak的函数吗 655
30.4.10有办法在消息框的文本中强制换行吗 655
30.5对象.属性.方法和事件 655
30.5.1不理解对象的概念,有可以使用的Excel对象的列表吗 655
30.5.2有太多属性和方法可以使用.如何从中找出适用于某个特殊对象的方法和属性呢 655
30.5.3集合的概念是什么?集合是对象吗 656
30.5.4当在VBA代码中引用工作表时,就会得到“下标越界”的错误.没有使用任何下标,怎么会出现这种错误呢 656
30.5.5如何避免用户的鼠标指针滚动到工作表的外部 656
30.5.6Select和Application.Goto之间有什么区别 656
30.5.7激活单元格区域和选中单元格区域之间有什么区别 656
30.5.8有没有快速办法可以删除工作表的所有值,但是保持公式原封不动 657
30.5.9知道如何编写VBA指令通过使用单元格地址来选中某个单元格区域,但是如果只知道单元格区域的行号和列号,又该如何编写VBA指令来选中单元格区域呢 657
30.5.10有退出Excel的VBA命令吗?当试着录制“文件”“退出”命令时,还没有看到它生成的代码Excel就关闭了 657
30.5.11怎么关闭运行宏时的屏幕更新动作 657
30.5.12在VBA中创建单元格区域名称的最简单的方法是什么 657
30.5.13如何确定某个特殊的单元格或者单元格区域是否有名称 657
30.5.14可以禁用显示在Excel的“打印预览”窗口中的“设置”和“页边距”按钮吗 658
30.5.15宏在运行的时候能够在状态栏中显示消息吗?编写了一个很长代码的宏,如果能在状态栏中显示它的运行进度就好了 658
30.5.16录制了一个VBA宏,它复制某个单元格区域并将其粘贴到别的区域中.这个宏使用了Select方法.还有更加有效率的方式进行复制粘贴吗 658
30.5.17没有找到排序VBA数组的方法.只能先把值复制到工作表中,然后再使用Range.Sort方法吗 658
30.5.18宏只对选中的单元格起作用,但是如果选中了别的内容(比如图表),则会运行失败.如何能确保选中单元格区域了呢 659
30.5.19如何确定图表是否处于活动状态 659
30.5.20VBA宏要计算用户选中的行数.当选中不相邻的行时,使用Selection.Rows.Count不起作用.这是bug吗 659
30.5.21使用Excel创建发票,能生成惟一的发票编号吗 659
30.5.22想使得某个工作簿一直保持可见,这样别的应用程序窗口就不能隐藏该工作簿了,有这种属性吗 660
30.5.23如何阻止Excel在运行时显示消息?例如,下面将消除宏删除工作表时所出现的消息 660
30.5.24可以用VBA指令选中某一列或者某一行中的最后一项吗?一般而言,可以使用Ctrl+Shift+下箭头键或者Ctrl+Shift+右箭头键组合,但是用宏应该怎么办呢? 660
30.5.25如何确定某个特殊列中的最后一个非空的单元格 660
30.5.26如果A65536单元格不为空,上述指令就不会起作用 660
30.5.27VBA引用可以变得非常长,特别是在需要通过引用工作表和工作簿使得对对象的引用符合标准时.能缩减这种引用的长度吗 661
30.5.28如果不知道数组包含多少元素,可以声明数组吗 661
30.5.29能允许用户撤销宏吗 661
30.5.30有一个1-2-3宏能够暂停运行使得用户可以在某个特定的单元格中输入数据.如何在VBA宏中获得同样的效果呢 661
30.5.31VBA有一个InputBox函数,但是还有一个Application对象的InputBox方法,两者一样吗 661
30.5.32当使用RGB函数指定颜色后,有时候颜色不对.为什么 662
30.5.33编写VBA指令创建一个公式,如果需要在引号引起来的文本中插入引号("),该怎么办呢 662
30.5.34创建了一个数组,但是数组中的第1个元素却成了第2个元素.这是为什么 662
30.5.35希望VBA代码运行的速度尽可能快,有什么建议 662
30.6用户窗体 662
30.6.1只需要少量的信息,而使用用户窗体似乎有些大材小用,有别的办法吗 663
30.6.2用户窗体上有12个命令按钮.如何指定当单击其中任意一个按钮时执行某一个宏 663
30.6.3如何在用户窗体中显示图表 663
30.6.4如何从用户窗体的标题栏上删除“关闭”按钮,不希望用户单击这个按钮来关闭窗体 663
30.6.5创建了一个用户窗体,其中的控件用ControlSource属性链接到了工作表上的单元格.这是最佳的办法吗 663
30.6.6能为用户窗体创建一个控件数组吗?VisualBasic可以这么做,但是不知道在ExcelVBA中如何做 663
30.6.7隐藏用户窗体和卸载用户窗体之间有区别吗 664
30.6.8做其他事情时如何保持用户窗体的打开状态 664
30.6.9在编写UserForm1.ShowvbModeless时,Excel97出现一个编译错误.如何在Excel2000以及更高的版本中使得窗体成为无模式的,而同时使其在Excel97中保持模态设置 664
30.6.10想在执行耗费长时间的过程的同时显示一个进度条,就像在安装软件时看到的那样.该怎么做呢 664
30.6.11如何使用Excel的绘图工具在用户窗体上创建简单的图形 665
30.6.12如何才能在用户窗体上产生文件及其目录的列表,以便用户可以从这个列表中选择文件呢 665
30.6.13想把两个字符串连接起来并将它们显示在一个列表框控件中.但是在实现的时候,对不齐这些字符串.怎么才能使得字符串之间具有相等的间距呢 665
30.6.14想用条目填充列表框或者组合框控件,有没有简单的办法 665
30.6.15能从VBA显示内置的Excel对话框吗 665
30.6.16尝试了上一个问题中描述的方法,但是却收到错误消息.这是为什么 665
30.6.17每次创建用户窗体时,都要重复添加“确定”按钮和“取消”按钮的步骤.有没有办法可以使得这些控件自动出现呢 665
30.6.18可以创建不带标题栏的用户窗体吗 666
30.6.19录制了一个打印文件的VBA宏.然而,好像无法在代码中提供文件名.无论怎么试,都会得到希望提供文件名的提示 666
30.6.20当在用户窗体上单击某个按钮时,没有任何反应.哪里做错了 666
30.6.21不管视频显示器的分辨率是多少,能创建大小一样的用户窗体吗 666
30.6.22可以创建用户窗体使得用户能够通过指示选中工作表的某个单元格区域吗 666
30.6.23能改变用户窗体的启动位置吗 666
30.6.24可以往工作簿中添加Excel5/95对话框工作表吗 666
30.7加载宏 666
30.7.1从哪里可以获得Excel加载宏 667
30.7.2如何安装加载宏 667
30.7.3当从Excel的“加载宏”对话框安装加载宏时,加载宏没有名称或者说明.如何给加载宏添加说明呢 667
30.7.4有一些加载宏不再使用,如何才能从“加载宏”对话框的“可用加载宏”列表中将它们删除呢 667
30.7.5如何创建加载宏 667
30.7.6想创建一个加载宏,但是“保存类型”下拉列表中没有提供加载宏方面的选项 667
30.7.7应该将所有必要的工作簿转换为加载宏吗 667
30.7.8需要将工作簿保存两个副本(XLS版本和XLA版本)吗 668
30.7.9如何在创建加载宏之后对其进行修改呢 668
30.7.10XLS文件与依据XLS文件创建的XLA文件之间有什么区别?XLA版本是编译后的结果吗?XLA版本是否运行得更快呢 668
30.7.11如何保护加载宏的代码,使得别人查看不到它的代码 668
30.7.12XLA加载宏安全吗?换句话说,如果发布了XLA文件,能保证没有人能够查看其中的代码吗 668
30.8命令按钮 668
30.8.1Excel95拥有一个很方便的菜单编辑器,但是Excel97以及更高的版本中却没有这种菜单编辑器.该怎么办 668
30.8.2能编辑用Excel95的菜单编辑器创建的菜单吗 668
30.8.3当用“自定义”对话框更改菜单时,菜单的改变是永久性的.如何才能使得菜单的更改只应用于一个工作簿呢 669
30.8.4知道可以使用Faceld属性给工具栏控件添加图像,但是如何找到对应于某个特殊图像的Faceld值呢 669
30.8.5往工作簿附加了一个新版的工具栏,但是Excel继续使用老式的版本,如何才能使用新版本的工具栏呢 669
30.8.6已经对Excel的工具栏做了大量的修改.如何才能将所有这些工具栏恢复成原来的状态呢 669
30.8.7如何使得自定义菜单只在某个特殊的工作簿处于活动状态时才显示出来 669
30.8.8如何在工具栏上的两个按钮之间添加分隔栏 669
30.8.9如何在菜单项旁边显示选中标记 670
30.8.10不小心删除了工作表菜单中的某些项,但是找不回来,重新启动Excel也不能修复 670
30.8.11如何禁用所有单击右键出现的快捷菜单 670
30.8.12能禁用当用户在工具栏上单击鼠标右键出现的工具栏列表吗 670
第8部分附录 671
附录AExcel在线资源 672
附录BVBA语句和函数引用 677
附录CVBA错误代码 684
附录D光盘上的内容 687

本目录推荐