ExcelVBA程序开发自学宝典
如何学习VBA
1 初步感受VBA的魅力
1.1 批量任务一键执行
1.1.1 准备工作
1.1.2 程序测试
1.1.3 案例点评
1.2 多工作簿自动汇总
1.2.1 案例需求
1.2.2 程序测试
1.2.3 案例点评
1.3 浅谈VBA优势
1.3.1 批量执行任务
1.3.2 将复杂的任务简单化
1.3.3 提升工作表数据的安全性
1.3.4 提升数据的准确性
1.3.5 完成Excel本身无法完成的任务
1.3.6 开发专业程序
2 VBA程序入门
2.1 如何存放代码
2.1.1 认识模块
2.1.2 管理模块
2.2 如何产生代码
2.2.1 复制现有的代码
2.2.2 录制宏
2.2.3 手工编写代码
2.2.4 从模板中获取代码
2.3 如何调用代码
2.3.1 F5键
2.3.2 Alt+F8组合键
2.3.3 自定义快捷键
2.3.4 按钮
2.3.5 菜单
2.4 如何保存代码
2.4.1 工作簿格式
2.4.2 解决代码丢失问题
2.4.3 显示文件扩展名
2.5 如何放行代码
2.6 如何查询代码帮助
2.6.1 调用帮助系统
2.6.2 为什么查看不了帮助
3 VBA的程序结构分析
3.1 子过程的结构
3.1.1 认识程序结构
3.1.2 为VBA程序添加注释
3.2 子过程的作用范围
3.2.1 何谓作用范围
3.2.2 公有过程与私有过程的区别
3.3 过程的命名规则
3.4 过程的参数
3.5 过程的执行流程
3.5.1 正常的执行流程
3.5.2 改变程序的执行流程
3.6 中断过程
3.6.1 结束过程:End Sub
3.6.2 中途结束过程:Exit sub
3.6.3 中途结束一切:End
3.6.4 暂停过程:Stop
3.6.5 手动暂停程序:Ctrl+Break
4 VBA四大基本概念
4.1 Excel的对象
4.1.1 什么是对象
4.1.2 对象与对象集合
4.1.3 对象的层次结构
4.1.4 父对象与子对象
4.1.5 活动对象
4.2 对象的方法和属性
4.2.1 属性与方法的区别
4.2.2 查询方法与属性的两种方法
4.2.3 方法与属性的应用差异
4.3 对象的事件
4.3.1 什么是事件
4.3.2 事件的分类及其层级关系
4.3.3 工作簿事件与工作表事件一览
4.3.4 工作簿与工作表事件的作用对象
4.3.5 快速掌握事件过程
4.3.6 何时需要使用事件过程
5 通过变量强化程序功能
5.1 数据类型
5.1.1 为什么要区分数据类型
5.1.2 认识VBA的数据类型
5.2 声明变量
5.2.1 变量的定义
5.2.2 变量的声明方式
5.2.3 变量的赋值方式与初始值
5.2.4 如何确定变量的数据类型正确
5.2.5 正确声明变量的数据类型的优势
5.2.6 变量的作用域
5.2.7 变量的生存周期
5.3 对象变量
5.3.1 如何区分对象变量和数据变量
5.3.2 对变量赋值
5.3.3 使用对象变量的优势
5.4 声明常量
5.4.1 常量的定义与用途
5.4.2 常量的声明方式
5.4.3 常量的命名规则
6 深入剖析常见对象的引用方式
6.1 关于对象
6.1.1 对象的结构
6.1.2 对象与对象的集合
6.1.3 引用集合中的单一对象
6.1.4 父对象与子对象
6.1.5 活动对象
6.2 对象的简化引用
6.2.1 使用对象变量
6.2.2 使用With语句
6.3 单元格对象
6.3.1 Range("A1")方式引用单元格
6.3.2 Cells(1,1)方式引用单元格
6.3.3 [a1]方式引用单元格
6.3.4 Range("A1")、Cells(1,1)与[a1]引用单元格方式比较
6.3.5 Selection与ActiveCell:当前选区与活动单元格
6.3.6 已用区域与当前区域
6.3.7 SpecialCells:按条件引用区域
6.3.8 CurrentArray:引用数组区域
6.3.9 Resize:重置区域大小
6.3.10 Offset:根据偏移量引用新区域
6.3.11 Union:多区域合集
6.3.12 Intersect:单元格、区域的交集
6.3.13 End:引用源区域的区域尾端的单元格
6.3.14 RangeFromPoint:屏幕坐标下的单元格
6.4 图形对象
6.4.1 Shapes:图形对象集合
6.4.2 图形对象的名称
6.4.3 DrawingObjects:隐藏的图形对象集合
6.5 表对象
6.5.1 表的类别
6.5.2 Worksheets:工作表集合
6.5.3 引用工作表子集
6.5.4 ActiveSheet:活动表
6.5.5 工作表的特性
6.6 工作簿对象
6.6.1 工作簿格式与特性
6.6.2 Workbooks:工作簿集合
6.6.3 引用工作簿子集
6.6.4 活动工作簿
7 常用语句的语法剖析
7.1 创建输入框
7.1.1 Application.Inputbox方法
7.1.2 基本语法
7.1.3 案例应用
7.2 条件判断语句
7.2.1 IIF函数的语法与应用
7.2.2 IIF函数的限制
7.2.3 IF Then语句的语法详解
7.2.4 IF Then应用案例
7.2.5 IF Then Else语句的语法与应用
7.2.6 多条件嵌套的条件判断语句
7.2.7 Select Case语法详解
7.2.8 Select Case与IF Then Else之比较
7.2.9 借用Choose函数简化条件选择
7.3 循环语句
7.3.1 For Next语句
7.3.2 For Each Next语句
7.3.3 Do Loop语法详解
7.4 错误处理语句
7.4.1 错误类型与原因
7.4.2 Err对象及其属性、方法
7.4.3 认识Error函数
7.4.4 On Error GoTo line
7.4.5 On Error Resume Next
7.4.6 On Error GoTo 0
7.5 选择文件与文件夹
7.5.1 认识FileDialog对象
7.5.2 选择路径
7.5.3 选择文件
7.5.4 按类型选择文件
8 让代码自动执行
8.1 让宏自动执行
8.1.1 Auto自动宏
8.1.2 升级版自动宏:事件
8.1.3 事件的禁用与启用
8.1.4 事件的特例
8.2 工作表事件应用案例
8.2.1 在状态栏提示最大值的单元格地址
8.2.2 快速录入出勤表
8.2.3 在状态栏显示选区的字母、数字、汉字个数
8.2.4 实时监控单元格每一次编辑的数据与时间
8.2.5 利用数字简化公司名输入
8.2.6 录入数据时自动跳过带公式的单元格
8.2.7 对选择区域进行背景着色
8.3 工作簿事件应用案例
8.3.1 新建工作表时自动设置页眉
8.3.2 未汇总则禁止打印与关闭工作簿
8.3.3 为所有工作表设计一个阅读模式
8.3.4 设计未启用宏就无法打开的工作簿
9 综合应用案例
9.1 Application应用案例
9.1.1 计算字符表达式
9.1.2 合并相同且相邻的单元格
9.1.3 在指定时间提示行程安排
9.1.4 模拟键盘快捷键打开高级选项
9.1.5 使用快捷键合并与取消单元格
9.1.6 查找至少两月未付货款的客户名称
9.2 Range对象应用案例
9.2.1 合并工作表
9.2.2 合并区域且保留所有数据
9.2.3 合并计算多区域的值
9.2.4 模糊查找公司名称并罗列出来
9.2.5 反向选择单元格
9.2.6 插入图片并调整为选区大小
9.2.7 提取唯一值
9.2.8 隐藏所有公式结果为错误的单元格
9.3 Comment 对象应用案例
9.3.1 在所有批注末尾添加指定日期
9.3.2 生成图片批注
9.3.3 添加个性化批注
9.3.4 批量修改当前表的所有批注外观
9.4 WorkSheet对象应用案例
9.4.1 新建工作表且命名为今日日期
9.4.2 批量保护工作表与解除保护
9.4.3 为所有工作表设置水印
9.4.4 批量命名工作表
9.4.5 判断筛选条件
9.5 Workbook对象应用案例
9.5.1 拆分工作簿
9.5.2 每10分钟备份一次工作簿
9.5.3 5分钟未编辑工作簿则自动备份
9.5.4 记录文件打开次数
9.5.5 不打开工作簿而提取数据
9.5.6 建立指定文件夹下所有工作簿目录和工作表目录
10 编程规则与代码优化
10.1 代码编写规则
10.1.1 对代码添加注释
10.1.2 长代码分行
10.1.3 代码缩进对齐
10.1.4 声明有意义的变量名称
10.1.5 IF Then…End If类配对语句的录入方式
10.1.6 录入事件代码的方式
10.1.7 录入属性与方法的技巧
10.1.8 无提示的词组的录入技巧
10.1.9 善用公共变量
10.1.10 将比较大的过程分为多个再调用
10.1.11 减少过程参数
10.1.12 使用DoEvents转移控制权
10.1.13 使用常量名称替代常数
10.1.14 尽可能兼容Excel 2003、2010和2013版本
10.2 优化代码
10.2.1 强制声明变量
10.2.2 善用常量
10.2.3 关闭屏幕更新
10.2.4 利用With减少对象读取次数
10.2.5 利用变量减少对象读取次数
10.2.6 善用带$的字符串处理函数
10.2.7 利用数组代替单元格对象
10.2.8 不使用Select和Activate直接操作对象
10.2.9 将与循环无关的语句放到循环语句外
10.2.10 利用Instr函数简化字符串判断
10.2.11 使用Replace函数简化字符串连接
11 利用参数强化过程
11.1 什么是参数
11.1.1 参数的概念与用途
11.1.2 参数的语法结构
11.2 设计带有参数的Sub过程
11.2.1 必选参数
11.2.2 可选参数
11.2.3 不确定数量的参数
11.3 参数的赋值方式
11.3.1 按位置赋值
11.3.2 按名称赋值
11.3.3 方法的参数
12 编程的捷径
12.1 录制宏
12.1.1 录制宏的目的
12.1.2 录制宏的方法
12.2 查看提示
12.2.1 属性与方法列表
12.2.2 参数提示
12.3 调用笔记
12.3.1 笔记的对象
12.3.2 笔记的记录方式
12.4 使用工具模板
12.4.1 代码百宝箱
12.4.2 开发VBA插件
13 利用数组提升程序效率
13.1 基本概念
13.1.1 何谓数组
13.1.2 数组的特点
13.1.3 一维数组
13.1.4 二维数组
13.1.5 数组的参数
13.1.6 声明数组变量
13.1.7 动态数组与静态数组的分别
13.1.8 释放动态数组的存储空间
13.2 数组函数
13.2.1 用函数创建数组
13.2.2 获取数组元素
13.2.3 判断变量是否为数组
13.2.4 转置数组
13.2.5 获取数组的上标与下标
13.2.6 转换文本与数组
13.2.7 筛选数组
13.3 案例分析
13.3.1 将指定区域的单词统一为首字母大写
13.3.2 罗列不及格学生的姓名、科目和成绩
13.3.3 跨表搜索学员信息
13.3.4 将职员表按学历拆分成多个工作表
13.3.5 将选区中的数据在文本与数值之间互换
13.3.6 获取两列数据的相同项
13.3.7 无人值守的多工作簿自动汇总
14 正则表达式与VBA
14.1 何谓正则表达式
14.1.1 概念
14.1.2 特点
14.1.3 调用方式
14.2 语法基础
14.2.1 调用正则表达式的基本格式
14.2.2 正则表达式的对象、属性和方法
14.2.3 匹配的优先顺序
14.2.4 借用元字符强化搜索功能
14.3 正则表达式应用
14.3.1 乱序字符串取值并汇总
14.3.2 计算建筑面积
14.3.3 取括号中的数字
14.3.4 去除字符串首尾的空白字符
14.3.5 将字符串中的多段数字分列
14.3.6 获取E-mail地址
14.3.7 提取文件的路径与文件名
14.3.8 汇总人民币
14.3.9 开发分列函数
14.3.10 删除重复字词
15 详解字典应用
15.1 Dictionary对象基础
15.1.1 Dictionary对象的调用
15.1.2 Dictionary的特点
15.1.3 Dictionary对象的属性与方法
15.2 Dictionary对象的应用技巧
15.2.1 利用字典创建三级选单
15.2.2 分类汇总
15.2.3 对多列数据相同者应用背景色
15.2.4 按姓名计数与求产量平均值
15.2.5 按品名统计半年内的产量合计
16 开发自定义函数
16.1 自定义函数的功能和语法
16.1.1 Function过程与Sub过程的区别
16.1.2 Function过程的语法
16.1.3 自定义函数的命名规则
16.2 开发不带参数的Function过程
16.2.1 判断活动工作簿是否存在图形对象
16.2.2 计算公式所在单元格的页数
16.3 开发带有一个参数的Function过程
16.3.1 在不规则的合并单元格中执行合计
16.3.2 建立活动工作簿的表目录
16.4 开发带有两个参数的Function过程
16.4.1 分段提取数值
16.4.2 获取最大值、最小值或众数的地址
16.4.3 汇总前N大值
16.5 开发复杂的Function过程
16.5.1 合并区域的值或者数组
16.5.2 按单元格背景颜色进行条件求和
16.5.3 按颜色查找并返回数组
16.5.4 合计分隔符左边的所有数值
16.6 编写函数帮助
16.6.1 MacroOptions方法的语法
16.6.2 为函数分类及添加说明
17 设计窗体
17.1 UserForm简介
17.1.1 窗体与控件的用途
17.1.2 插入窗体与控件的方法
17.1.3 使用Excel 5.0对话框
17.2 窗体控件一览
17.2.1 标签
17.2.2 文本框
17.2.3 命令按钮
17.2.4 复合框
17.2.5 列表框
17.2.6 复选框
17.2.7 选项按钮
17.2.8 分组框
17.2.9 切换按钮
17.2.10 多页控件
17.2.11 滚动条
17.2.12 图像
17.2.13 RefEdit
17.2.14 附加控件
17.3 设置控件属性
17.3.1 调整窗体控件位置与大小
17.3.2 设置控件的顺序
17.3.3 共同属性与非共同属性
17.3.4 设置颜色属性
17.3.5 设置控件的宽度与高度
17.3.6 设置Picture属性
17.3.7 设置RowSource属性
17.3.8 设置Flash动画
17.4 窗体与控件的事件
17.4.1 UserForm对象的事件
17.4.2 激活窗体时将所有工作表名称导入到列表框中
17.4.3 双击时关闭窗体
17.4.4 窗体永远显示在屏幕的左上角
17.4.5 按下左键移动窗体、按下右键移动控件
17.4.6 控件事件介绍
17.4.7 在窗体中建立超链接
17.4.8 鼠标移过时切换列表框数据
17.4.9 让输入学号的文字框仅能录入6位数字
17.4.10 运行窗体期间用鼠标调整文字框大小
17.4.11 为窗体中所有控件设置帮助
17.5 窗体的综合应用案例
17.5.1 设计登录界面
17.5.2 权限认证窗口
17.5.3 设计计划任务向导
17.5.4 设计动画帮助
17.5.5 用窗体浏览图片
17.5.6 设计多表录入面板
17.5.7 多条件高级查询
18 处理文件与文件夹
18.1 认识FSO对象、属性与方法
18.1.1 FSO对象的调用方式
18.1.2 FSO的对象
18.1.3 FSO常用对象的方法与属性
18.2 用FSO处理文件与文件夹
18.2.1 让D盘中所有隐藏的文件夹显示出来
18.2.2 遍历子文件夹创建文件目录
18.2.3 删除D盘中大小为0的文件夹
18.2.4 罗列最近3天修改过的所有文件的名称
19 认识类和类模块
19.1 类模块基础
19.1.1 类的概念与用途
19.1.2 声明与调用类
19.2 类与应用程序级事件
19.2.1 在状态栏显示当前行的最大值与最小值地址
19.2.2 录入数据时自动将“M”后面的数字“2”显示为上标
19.3 类模块与窗体控件
19.3.1 何时需要使用类
19.3.2 为按钮批量指定MouseMove事件
19.3.3 开发颜色面板
20 VBA与注册表
20.1 VBA对注册表的控制方式
20.1.1 什么是注册表
20.1.2 VBA操作注册表的方法
20.2 注册表的应用
20.2.1 记录当前工作簿最后一次打开时间
20.2.2 创建文件目录时自动记忆上一次的路径
20.2.3 让是否显示零值的设置适用于所有工作表
20.3 注册表函数的缺点与改善方法
20.3.1 VBA操作注册表的优缺点
20.3.2 借用脚本自由控制注册表
20.3.3 禁止使用U盘
21 Ribbon功能区设计
21.1 功能区开发基础
21.1.1 Ribbon的特点
21.1.2 功能区的组件图示
21.1.3 手工定制功能区
21.1.4 认识Ribbon代码编辑器
21.1.5 获取内置按钮图标
21.2 Ribbon定制之语法分析
21.2.1 功能区代码的结构
21.2.2 显示与隐藏功能区:ribbon
21.2.3 隐藏选项卡:tab
21.2.4 创建新选项卡:tab
21.2.5 创建新组:group
21.2.6 创建对话框启动器:dialogBoxLauncher
21.2.7 在组中添加命令按钮:button
21.2.8 创建切换按钮:toggleButton
21.2.9 标签与复选框:labelControl/checkBox
21.2.10 在按钮之间添加分隔条:separator
21.2.11 创建弹出式菜单:menu
21.2.12 创建拆分按钮:SplitButton
21.2.13 创建下拉列表:DropDown
21.2.14 创建编辑框:editBox
21.2.15 锁定或隐藏内置功能
21.3 使用回调函数强化功能区
21.3.1 为什么需要使用回调函数
21.3.2 回调函数详解
21.3.3 创建在每月的1日到3日才能使用的按钮
21.3.4 创建按下与弹起时自动切换图标的按钮
21.3.5 创建一个能显示图形对象数量的标签
21.3.6 在功能区中快速查找
21.3.7 在组的标签处显示问候语
21.3.8 调用大图片创建下拉菜单
21.3.9 通过复选框控制错误标识的显示状态
21.3.10 在功能区中创建工作表目录
21.4 使用模板
21.4.1 模板的重要性
21.4.2 模板的使用方法
21.5 制作两个模板
22 开发通用插件
22.1 关于加载宏
22.1.1 加载宏的特点
22.1.2 为什么使用加载宏
22.1.3 加载宏管理器
22.1.4 加载内置的加载宏
22.1.5 安装与卸载自定义加载宏
22.2 关于加载项
22.2.1 加载项的分类
22.2.2 加载项的开发方式
22.3 开发插件的准备工作
22.3.1 加载宏的格式
22.3.2 引用加载宏的数据
22.3.3 设计加载宏的附加工作
22.4 开发公/农历日历控件
22.4.1 确认程序需要具备的功能
22.4.2 定义公历转农历的函数
22.4.3 设计日期输入器窗体
22.4.4 编写窗体初始化代码
22.4.5 实现输入器与工作表交互
22.4.6 设计帮助
22.4.7 定制功能区菜单
22.4.8 测试并发布插件
22.5 开发文本与数值互换插件
22.5.1 确认所需具备的功能
22.5.2 编写主程序
22.5.3 定制功能区菜单
22.5.4 测试代码并发布插件
23 代码封装技巧
23.1 封装自定义函数
23.1.1 安装VB 6.0企业版
23.1.2 封装自定义函数
23.1.3 安装自定义函数
23.2 封装Sub过程
23.2.1 建立VB工程
23.2.2 添加引用
23.2.3 写入代码
23.2.4 发布COM加载项
23.2.5 安装COM加载项
23.3 设计安装软件
23.3.1 程序选择
23.3.2 使用程序向导制作安装软件
23.3.3 测试安装软件
24 开发逐步提示的数据录入助手
24.1 罗列需求
24.1.1 插件功能描述
24.1.2 插件格式需求
24.2 设计窗体
24.2.1 设计选项窗体
24.2.2 设计数据录入助手窗体
24.3 编写代码
24.3.1 选项窗体代码
24.3.2 数据录入助手窗体代码
24.3.3 应用程序级事件代码
24.4 创建功能区菜单
24.4.1 创建功能区菜单
24.4.2 回调过程
24.5 发布插件与测试功能
24.5.1 发布插件
24.5.2 测试插件功能
思维导图
防止博客图床图片失效,防止图片源站外链:
http://www.processon.com/chart_image/5e5aa269e4b069f82a1a2073.png)
思维导图在线编辑链接: