内容简介
第1章 认识VBA
第1节 认识宏
疑难1 如何显示“开发工具”选项卡
在Excel 2007中显示“开发工具”选项卡
疑难2 如何录制和运行宏
宏代码保存的位置
疑难3 如何编辑宏
利用按钮运行宏
疑难4 如何保存带有宏的工作簿
疑难5 如何屏蔽保存工作簿时的隐私问题警告
疑难6 如何设置宏的安全性
疑难7 如何创建和使用数字证书签名
第2节 认识VBE
疑难8 如何打开VBA编辑器
疑难9 VBA编辑器包含哪些窗口
VBE各窗口简介
VBE各窗口位置的调整
VBE各窗口的显示或隐藏
疑难10 VB编辑器包括哪些工具栏
第3节 VBA代码编写及帮助信息
疑难11 如何创建VBA程序
VBA代码编写格式
疑难12 如何运行及调用VBA程序
立即窗口的作用
疑难13 如何导入或导出VBA代码
疑难14 如何获取VBA帮助
疑难15 如何使用对象浏览器
对象浏览器
第4节 VBA基础
疑难16 如何定义变量使VBA程序更灵活
声明变量
变量名的命名规则
VBA的数据类型
数据类型的分类及表示方式
变量的赋值
变量的读取
VBA常量
定长字符串与变长字符串
隐式声明
疑难17 如何使多个程序共享变量
作用域
全局变量
局部变量
模块级变量
同名变量
疑难18 如何进行变量类型的转换
VBA中的类型转换函数
整数的类型转换
字符的类型转换
数据类型的隐式转换
疑难19 如何防止变量名称拼写错误
Option Explicit语句
强制显式声明变量设置
使用编译功能查错
疑难20 如何利用VBA进行计算
文本连接
算术四则运算
指数运算
整除
计算余数
比较运算
运算优先级
在文本中表示双引号(”)
疑难21 如何分段计算奖金系数
IF分支结构
逻辑运算符
Select…Case分支结构
Select…Case分支结构的条件
Select和IF分支结构的区别
疑难22 如何检验文本是否以字母开头
Like运算符
VBA比较模式
疑难23 如何判断某个数是否为质数
Do…Loop循环
退出Do…Loop循环
For…Next循环
退出For…Next循环
死循环
退出多层循环
Goto语句和行标签
第5节 练习与思考
第2章 数据的基本处理
第1节 单元格的选取与赋值
疑难24 如何选取单元格
对象的概念
对象的属性和方法
单元格对象Range的表示方法
单元格对象Cells的表示方法
使用对象变量表示单元格对象
Evaluate方法表示单元格对象
Evaluate方法的简写模式
Evaluate方法的一般模式与简写模式的区别
单元格对象的Select方法
疑难25 如何选取单元格区域
以地址表示矩形单元格区域对象
以对角单元格表示矩形单元格区域对象
不规则单元格区域的表示
使用Union方法获取合并区域
使用Intersect方法获取多个区域的交集
疑难26 如何读取单元格的值和显示的值
单元格对象的Value属性
单元格对象的Text属性
自动列出成员
单元格的数字格式属性
疑难27 如何进行单元格批量赋值
利用Value属性给单元格赋值
For Each…Next循环
使用For Each…Next循环的注意事项
利用Value属性给单元格区域赋值
单元格(Range)对象的Address属性
疑难28 如何向单元格输入公式
利用Formula属性给单元格输入公式
Formula属性和Value属性的联系与区别
利用FormulaR1C1属性给单元格输入公式
R1C1引用样式的规则
通过代码实现粘贴值
使用VBA替代公式实现计算
疑难29 如何在VBA中使用工作表函数进行计算
WorksheetFunction对象
VBA中使用工作表函数
获取VBA中工作表函数的帮助
第2节 单元格的格式设置
疑难30 如何快速设置标题行格式
With语句
With语句的嵌套
Interior对象
Font对象
单元格的对齐方式
Selection对象
利用录制宏获取格式设置代码
通用的格式设置对象
疑难31 如何批量生成上标
Characters对象
Font对象的Superscript属性
设置Characters对象Font的注意事项
Characters属性的通用性
疑难32 如何快速将列进行分组
Columns对象和Rows对象
单列和单行的表示
多列和多行的表示
Group方法和Ungroup方法
单元格对象的EntireColumn属性和EntireRow属性
单元格区域的Columns属性和Rows属性
Outline对象
疑难33 如何批量合并相同的单元格
Range的Merge方法合并单元格
VBA运行时关闭警告
多行中相同的内容处理
疑难34 如何创建图片批注
批注(Comment)对象
批注的添加与删除
FillFormnat对象
On Error语句
第3节 单元格的定位与查找
疑难35 如何利用VBA程序定义条件格式
VBA条件格式的原理
表示整行的方法
日期函数DateSerial
利用工作表事件实时设置格式
疑难36 如何一次性替换所有的错误值
Range对象的Find方法
参数省略表示法
查找格式
使用Is Nothing判断对象是否初始化
IsError函数
SpecialCells方法
Find方法的一般形式
CVErr函数
疑难37 如何获取最后一行数据的行数
使用Find方法查找最后的单元格
Find方法按行查找和按列查找的区别
获取工作表总行数
单元格对象的End属性
End属性的局限性
其他获取最后数据行行号的方法
疑难38 如何按颜色查找单元格
单元格对象的Clear方法
动态表示数据区域
单元格对象的Copy方法
单元格对象的选择性粘贴(PasteSpecial)方法
第4节 数据的整理
疑难39 如何按条件隐藏数据行
行和列的隐藏
单元格对象的AutoFilter(自动筛选)方法
单元格对象的AdvancedFilter(高级筛选)方法
疑难40 如何批量删除空行
单元格删除Delete方法
单元格删除的通用算法
利用Union获取整个单元格区域进行统一操作
Union方法的注意事项
单元格插入Insert方法
疑难41 如何实现逐行输入
Protect方法和Unprotect方法
单元格的Locked属性
允许VBA修改保护后的工作表
疑难42 如何用VBA创建下拉列表
Validation对象
Validation对象的Add方法
疑难43 如何使用VBA对数据按自定义序列进行排序
单元格对象的Sort方法
添加和删除自定义序列CustomList
使用自定义序列排序
Sort对象
排序字段SortField
按颜色排序
设置排序区域SetRange方法
第5节 练习与思考
第3章 VBA常用函数和语句
第1节 数学函数
疑难44 如何用VBA进行四舍五入
VBA的Round函数
VBA的Round函数与工作表Round函数的区别
在Office软件中使用自定义函数替代VBA的Round函数
疑难45 如何随机筛选指定个数的记录
随机数Rnd函数
不重复地挑选数据
Rnd函数语法
伪随机数概念
Randomize语句
疑难46 如何利用VBA转换十六进制数字
VBA的Hex函数
利用工作表函数进行进制转换
以文本形式表示数字
单元格的Prefix属性与Excel的TransitionNavigKeys属性
其他进制数字在VBA中的表示方法
第2节 文本函数
疑难47 如何判断某文本中是否包含指定字符
Instr函数
InstrRev函数
疑难48 如何批量替换文本中的指定字符
Replace函数
单元格对象的Replace方法
疑难49 如何根据身份证号码判断性别
Left、Right和Mid函数
Len函数
疑难50 如何替换文本中指定位置的字符
MID语句
使用MID语句的注意事项
MID语句的优势和局限性
第3节 日期和时间函数
疑难51 如何获取和设置计算机中的当前日期
Date函数和Date语句
DateSerial函数
更改时间及日期的限制
Time函数和Time语句
Now函数
VBA中日期的实质
疑难52 如何计算合同到期日期
DateAdd函数
疑难53 如何提取身份证号码中的出生日期并计算年龄
DateDiff函数
DateDiff函数中interval参数“w”和“ww”的区别
VBA的DateDiff函数和工作表函数DateDif的区别
疑难54 如何将日期转换成英文格式
Format函数
特殊的英文格式日期
使用DatePart函数获取日期信息
第4节 其他常用函数和语句
疑难55 如何求得文本计算式的计算结果
去除有规律但内容不定的文本
String函数
Evaluate方法计算表达式的值
利用VBScript的Eval函数计算表达式的值
疑难56 如何获取当前Windows登录用户名
Environ函数
获取所有的系统环境变量
疑难57 如何为宏创建快捷键
Application.OnKey方法
Application.OnKey方法的注意事项
Application.SendKeys方法
疑难58 如何定时运行程序
Application.OnTime方法
使用Application.OnTime重复执行程序
取消Application.OnTime定时器的方法
疑难59 如何用VBA在工作表中创建文件清单
Dir函数
Dir函数查找路径下所有的文件
GetAttr函数获取文件属性
SetAttr语句修改文件属性
疑难60 如何用VBA将文件复制到另一个文件夹下并改名
FileCopy语句
Name…As语句
第5节 练习与思考
第4章 多表数据处理
第1节 跨工作表的数据处理
疑难61 如何按模板快速生成指定数量的工作表
工作表对象(Worksheet)及其表示方法
工作表集合和工作表
工作表常用的基本属性
工作表的添加与复制
工作表对象(Worksheet)与单元格对象(Range)的关系
工作表的删除
Application.DisplayAlerts属性
疑难62 如何进行跨表数据查询
跨表操作单元格
连续查找功能
疑难63 如何进行跨表数据录入
ListObject对象
ListObject对象的表示方法
ListColumn对象
向ListObject中添加新数据
使用VBA添加ListO bject对象
Excel中数据存储的结构
疑难64 如何按照关键字批量创建超链接
Hyperlink对象
创建超链接
删除超链接及访问超链接
创建超链接打开指定的宏代码
第2节 跨工作簿的数据处理
疑难65 如何将多个工作表保存至单独的工作簿中
工作簿对象(Workbook)及其表示方法
Application、Workbook、Worksheet和Range的关系
工作簿(Workbook)对象的常用属性
工作簿的新建和保存
获取当前文件的目录
跨工作簿复制工作表
使用Application.PathSeparator获取系统路径分隔符
SaveAs和Save的区别
疑难66 如何读取其他工作簿的数据
打开关闭的工作簿
疑难67 如何导入多个工作簿中的工作表
导入多个工作簿中的工作表
Application.ScreenUpdating属性
疑难68 如何将当前工作簿备份至指定目录
工作簿对象(Workbook)的SaveCopyAs方法
SaveCopyAs方法和SaveAs方法的区别
第3节 工作表和工作簿的事件程序
疑难69 动态改变当前选中行的颜色
事件的概念
Worksheet的Selection Change事件
启用Excel的事件
工作表事件一览
疑难70 如何实现双击标题行即对该列降序排序
工作表双击事件(BeforcDoubleClick)
疑难71 如何完善数据有效性验证
工作表对象的Change事件
判断数据是否符合有效性设置
Change事件的缺陷
利用VBA撤销操作
事件循环
禁用事件
疑难72 如何动态隐藏工作表
工作表(Worksheet)对象的Select方法
工作表激活事件(Activate)和失去激活状态事件(Deactivate)
工作簿事件
类模块和Me变量
疑难73 如何实现必填数据为空则无法保存
工作簿保存事件(BeforeSave)
疑难74 如何进行个性化的工作表保护
工作簿的Workbook SheetChange事件
工作簿的Workbook Activate事件
事件的组合
疑难75 如何实现用户登录机制
工作簿打开事件(Open)
登录的机制
auto_open和auto_close
第4节 练习与思考
第5章 数据处理的综合应用
第1节 计算及统计
疑难76 如何计算个人所得税
个人所得税计算的步骤
实现简单计算的思考步骤
疑难77 如何进行销售合计汇总
使用循环结合工作表函数进行数据合计
行循环结构的建立
列循环结构的建立
多层嵌套循环结构的建立
循环的简化
以编程的方式思考问题
疑难78 如何将15位身份证号码升为18位
身份证号码解读
利用字符串截取进行查询
第2节 数据查询与汇总
疑难79 如何罗列满足条件的所有数据
内嵌分支的循环结构
罗列数据
循环结构建立的误区
疑难80 如何在多个工作表中查找指定的数据
多表查询
疑难81 如何获取不重复的数据
去除重复值(RemoveDuplicates)方法
使用VBA去除重复值
巧用Exit语句退出循环以加快速度
循环中判断条件的确立
使用Find方法代替循环遍历查找
疑难82 如何对比两个表的数据
两表比较的步骤
疑难83 如何按单列汇总数据
按单列汇总数据的步骤
可互换的循环嵌套
多个循环结构的合并
学会简单直接的思考方式
疑难84 如何按多列汇总数据
按多列汇总数据的步骤
疑难85 如何制作多级下拉列表
创建多级下拉列表的思考步骤
疑难86 如何获取交叉查询结果表
交叉汇总表
建立交叉汇总表的步骤
建立交叉汇总表的优化
疑难87 如何按单列汇总多个工作表
汇总多个工作表
汇总数据位置不同的多个工作表
疑难88 如何汇总列数不相等的多个工作表
合并汇总(Consolidate)方法
Array函数
Evaluate方法构造数组
使用VBA汇总多个列数不相等的工作表的步骤
疑难89 如何按指定列分拆工作表
拆分工作表的步骤
判断工作表是否存在的步骤
Is运算符比较对象变量
疑难90 如何制作动态汇总的数据查询表
动态汇总
多列连接
疑难91 如何利用数据透视表汇总数据
数据透视表缓存对象(PivotCache)
访问数据透视表缓存对象(PivotCache)
数据透视表对象(PivotTable)
创建数据透视表
访问数据透视表对象
数据透视表的字段(PivotField)
数据字段
疑难92 如何汇总多工作簿的数据
汇总多个工作簿
使用GetObject函数获取对象
第3节 数组处理
疑难93 如何建立数组加快程序运行
数组的基本概念
数组的声明
数组的赋值与数组数据的读取
Ubound和Lbound函数获取数组的上下限
ForEach...Next循环遍历数组的注意事项
计算程序运行的时间
数组处理的极限
疑难94 如何使用数组处理列数较多的数据
建立列数下标的数组
使用枚举Enum
疑难95 如何利用数组实现分列
Split函数
将动态数组写入单元格
数组的维度与单元格行列的关系
Option Base语句
Join函数
疑难96 如何利用数组提取不重复值
利用数组提取不重复值列表的步骤
Redim Preserve语句
使用工作表函数Transpose对数组进行转置
Filter函数
使用Filter函数提取不重复值的步骤
空数组的判断
Filter函数的精确筛选
Filter函数在数据比对中的应用
疑难97如何进行条件数量不确定的多条件数据查找
使用数组进行多条件查找
第4节 练习与思考
第6章 数据的转换
第1节 数据的导入与导出
疑难98 如何导入Access数据库的数据
利用ADO连接数据库
利用ADO执行SQL查询并在Excel中输出结果
SQL语句
ADO连接不同的数据库
疑难99 如何利用VBA批量导入文本文件
用Open语句和Close语句打开和关闭文件
Input语句和Line Input语句读取文本文件
EOF函数
Transpose函数将嵌套的一维数组转换为二维数组
疑难100 如何将xls格式工作簿批量转换为xlsx格式
使用HasVBProject属性判断工作簿是否有代码
禁止打开工作簿时执行程序
疑难101 如何将Excel按指定格式导出为文本文件
Open语句创建文本文件
使用Print语句向文件中写入指定的内容
Write语句
Index函数取二维数组的子集
疑难102 如何利用VBA批量发送邮件
CDO组件
CDO.Message对象
CDO.Message.Configuration对象
前期绑定与后期绑定
New关键字创建对象
添加邮件的附件
第2节 图形与图表
疑难103 如何利用VBA批量插入图片
Shapes、Shape和ShapeRange
Shapes对象插入图形的方法
Excel的坐标
图形大小的调整
获取图片的原始大小
将图片按比例缩放至单元格
图片批量插入的步骤
Pictures集合
疑难104 如何利用VBA生成图表
ChartObjects集合和ChartObject对象
Chart对象
数据系列(Series)对象
添加图表的其他方法
疑难105 如何将工作表数据批量导出为图片
Copy、Cut和Paste方法
图表对象(Chart)的Export方法
利用PPT导出图片
第3节 练习与思考
第7章 自定义过程和函数的开发
第1节 自定义过程和函数的开发实例
疑难106 如何编写带参数的过程
使用含有参数的过程供多个过程调用
含有参数的过程的声明方法
编写含有参数的过程的方法
使用Application.Run调用过程
疑难107 如何编写处理数组排序的过程
ByVal和ByRef的区别
选择排序
数组排序的方法简介
疑难108 如何编写个人所得税计算函数
声明自定义函数
自定义函数的返回值
自定义函数和过程的区别与联系
疑难109 如何编写获取某列最后非空单元格行号的函数
Volatile方法
易失性函数
疑难110 如何编写获取最小值的自定义函数
使用ParamArray关键字声明数组参数
IsMissing函数
IsArray函数
函数的嵌套与递归
疑难111 如何编写条件查询的函数
使参数适用于数组和单元格区域
TypeName函数和VarType函数
查找指定位置的数据
返回指定错误值的函数
疑难112 如何编写函数按条件汇总关闭的工作簿中的数据
自定义函数参数的跨表引用
条件求和函数的累加原理
使用Evaluate方法将引用转换为数组
疑难113 如何使用自定义函数返回满足条件的所有记录
以数组作为返回值的自定义函数
Application.Caller属性
疑难114 如何设置自定义函数的说明
Application.MacroOptions方法
第2节 练习与思考
第8章 Excel对话框操作
第1节 Excel对话框操作实例
疑难115 如何创建信息提示对话框
MsgBox函数
MsgBox函数buttons参数的组合
Application.Cursor属性
Application.SatusBar属性
疑难116 如何制作具有交互功能的提示对话框
MsgBox函数的返回值
疑难117 如何创建具备输入功能的对话框
VBA.InputBox函数
InputBox函数的返回值
疑难118 如何反复提示对话框直到数据合法
IsNumeric函数
Application.InputBox方法
疑难119 如何创建对话框的帮助文档
CHM文件及HTML Help Workshop
在Excel VBA中调用CHM文件
创建VBA项目的帮助系统
使用语句打开帮助文件
疑难120 如何显示打开文件对话框
Application.GetOpenFilename方法
FileDialog对象
FileDialog对象的常用属性
使用FileDialog对象的属性Filters添加筛选
FileDialog对象的Show方法和Execute方法
遍历通过FileDialog对象选择的文件
Application.GetSaveAsFilename方法
Application.Dialog对象
第2节 练习与思考
第9章 控件和窗体的应用
第1节 控件的基础
疑难121 如何在工作表中插入ActiveX控件
ActiveX控件
Excel中常用的ActiveX控件
编辑ActiveX控件
通过代码访问ActiveX控件
工作表中窗体(表单)控件和ActiveX控件的区别
疑难122 如何更改ActiveX控件的属性
ActiveX控件的属性
疑难123 如何创建ActiveX控件的事件
ActiveX控件的事件
ActiveX控件的常用事件
疑难124 如何使用日期选择控件向单元格输入日期
DTPicker控件
DTPicker控件的时间和日期的切换
DTPicker控件的日期输入方式
DTPicker控件的Value属性与Change事件
使用DTPicker控件实现日期选择并赋值给单元格
注册DTPicker控件
疑难125 如何创建动态智能匹配的下拉列表
TextBox控件和ListBox控件
ListBox控件的ListFillRange属性和List属性
ListBox控件的多列显示
ListBox控件的值
模糊查询下拉列表
控件的选用
ListBox和ComboBox控件
疑难126 如何批量设置控件属性
CallByName函数
使用CallByName函数获取子对象
使用CallByName函数批量修改对象的属性
灵活使用自定义过程
第2节 窗体和控件的深入应用
疑难127 如何创建并显示窗体
窗体对象及其属性
窗体对象的显示与关闭
窗体对象的装载与显示
窗体对象的卸载与隐藏
窗体的显示模式
疑难128 如何在窗体中插入控件
控件工具栏
控件的顺序
控件的组合
疑难129 如何利用窗体向工作表中录入数据
窗体控件与工作表的交互
窗体的事件
窗体中Controls集合访问控件
控件的排列
使用控件数组进行赋值
疑难130 如何利用窗体创建实时筛选浮动工具栏
Default和Cancel按钮
提高单元格隐藏的速度
自制浮动工具栏
动态显示与隐藏窗体
疑难131 如何移动不同列表框中的项目
ListBox的AddItem方法和RemoveItem方法
ListBox控件的MultiSelect属性
ListBox控件的Value属性
ListBox控件的ListIndex属性
VBA实现ListBox项目的移动
疑难132 如何利用复合框制作工作簿/表导航
复合框(ComboBox)控件
利用复合框制作二级下拉列表
疑难133 如何利用窗体制作向导系统
多页(MultiPage)控件
多页控件的页面
使用代码更改当前显示的页面
Application.SheetsInNewWorkbook属性
疑难134 如 何创建具有窗体交互的函数
创建具有窗体交互的函数的步骤
ListBox控件的Selected属性
疑难135 如何利用窗体制作登录界面
使用窗体作为操作界面
隐藏Excel工作簿
疑难136 如何动态地创建控件以显示查询结果
使用代码为窗体添加控件
通过名称控件排列
使用类模块为按钮批量添加事件
疑难137 如何动态创建窗体
VBComponents集合
VBComponent对象
第3节 练习与思考
第10章 自定义功能区
第1节 自定义功能区实例
疑难138 如何添加选项卡和内置控件
功能区简介
使用Excel选项自定义功能区
疑难139 如何创建工作簿级的自定义选项卡
Excel工作簿的实质
XML简介
customUI.xml
常用的功能区控件及通用属性
tabs控件和tab控件
group控件
命令控件
内置控件的ID
customUI.xml中控件和属性的命名规则
使用customUIEditor工具制作选项卡
疑难140 如何在功能区添加按钮并运行VBA程序
回调(CallBack)
IRibbonControl对象
疑难141 如何动态更改功能区控件属性
动态属性
I RibbonUI对象和Invalidate方法
设置IRibbonUI对象
Invalidate的实质
疑难142 如何添加自定义功能区列表控件的选项
dropDown控件添加选项
dropDown控件的onAction属性
获取dropDown控件选中选项的另一个方法
疑难143 如何实现功能区控件之间的交互
切换按钮(toggleButton)控件的getPressed属性
切换按钮(toggleButton)控件的onAction属性
切换按钮之间的交互
条件筛选的自定义过程
第2节 练习与思考
第11章 程序的错误调试
疑难144 如何利用出错信息判断工作表是否存在
On Error语句
Err对象
“运行时错误”的利用
代码标签
疑难145 如何在中断模式下调试程序
中断模式
程序的测试
疑难146 如何逐句调试程序
逐句运行
疑难147 如何为程序设置断点调试程序
断点
疑难148 如何运用监视窗口监控变量的值
监视窗口
使用“立即窗口”
疑难149 如何自定义错误
Err对象的Raise方法
疑难150 如何进行程序出错的自动处理
处理错误的两种方式
Resume语句
第12章 综合开发实战
疑难151 如何制作通用工具
通用工具的主程序设计
使用加载宏制作通用工具
加载宏工具的安装
疑难152 如何建立调查及数据收集系统
复杂的多功能程序的设计
疑难153 如何建立简易的收发管理系统
设计微型数据管理系统
使用同一个窗体操作不同的数据表
类模块中定义过程和函数