内容简介:
《Excel 2010 VBA编程与实践》是“Excel疑难千寻千解”丛书之一,为读者展示VBA编程的实战技巧,包括工作中的疑难处理方案、自定义函数技术、代码封装技术、功能区设计技术,以及插件开发实战与原理分析。《Excel 2010 VBA编程与实践》侧重于“解决问题”,主要展示诸多常见疑难的解决方案。阅读《Excel 2010 VBA编程与实践》,可以解决工作中的诸多疑难杂症,大大提高工作效率,且有助于提升编程能力、拓展思路,将理论向实战迈进。
《Excel 2010 VBA编程与实践》有一个贯穿全文的思想:让代码同时具备准确、纠错、兼容和效率四个特性,所以《Excel 2010 VBA编程与实践》所有案例都在准确性与高效性的基础上提供完善的错误处理措施与思路讲解,且所有案例都通用于Excel 2003、2007和2010。作者使用Excel 2010界面写作,但代码在多个版本中都可以正常运行,不需要任何修改。
《Excel 2010 VBA编程与实践》包括251个案例,最后一个是VBA的大型综合应用—开发工资管理系统。书中每个案例采取疑难描述、解决方案、操作方法、原理分析、知识扩展五个步骤进行讲解,力图解决问题之外还让读者可以通晓其思路和原理。
《Excel 2010 VBA编程与实践》配合《Excel VBA程序开发自学宝典》学习会有更好效果,该书侧重于VBA的基础理论教学,而《Excel 2010 VBA编程与实践》则侧重于解决实际问题,属于该书配套的进阶应用。前者学习理论与语法,而通过《Excel 2010 VBA编程与实践》学习思路与技巧。
《Excel 2010 VBA编程与实践》既适合Excel VBA用户参考学习,又可以作为大中专院校或者企业的培训教材,同时对于在数据处理与分析方面有实践经验的用户也有较高的参考价值。
作者简介:
罗刚君,网名andysky,Exceltip.net技术社区版主,多个OFFICE技术社区资深版主,从事Excel软件研究与写作多年,精通Excel VBA与函数、图表。在公司担任电脑技术管理,对办公应用有较极丰富的实战经验和心得。目前已经出版过5部Excel相关著作。
章兰新,网名zlxtl,Exceltip.net技术社区版主,多个OFFICE技术社区资深版主,拥有十多年丰富的政府信息化实践、管理和组织实施经验,精通Excel和MS SQL在管理中的应用。长期在政府财政经济部门实施电脑技术与管理、统计、数据分析相融合的工作,一直致力于推广EXCEL和数据库技术,对办公应用有极丰富的实战经验和心得。
黄朝阳,网名apolloh,Exceltip.net站长,微软全球最有价值专家(MVP)。拥有十多年丰富的企业信息化实践和管理经验,精通Excel和MS SQL在企业中的应用。早期曾在多个Office技术社区担任版主,参与过多部Excel畅销书的编著工作。
目录:
目 录
第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