Excel 2010 VBA 完整教程
第一部分:VBA 入门
1 什么是 VBA?
VBA 的全称是 Visual Basic for Applications(Visual Basic 应用程序),它是一种内嵌在 Microsoft Office 应用程序(如 Excel, Word, PowerPoint)中的编程语言。

- 简单来说:VBA 就是你用来“指挥”Excel 自动完成任务的“脚本语言”。
- 能做什么:
- 自动化重复性任务:每天需要将一个报表格式化、排序、汇总并生成图表,录制一个宏,然后用 VBA 优化它,以后只需点击一下按钮即可完成。
- 创建自定义函数:Excel 内置函数不够用?你可以用 VBA 编写自己的函数(UDF - User Defined Function),并在工作表中像使用
SUM()函数一样使用它。 - 开发自定义界面:可以创建自定义的选项卡、按钮、对话框,让 Excel 更符合你的工作流。
- 与外部程序交互:可以读取文本文件、操作其他应用程序、甚至连接数据库。
2 如何启用“开发工具”选项卡?
在 Excel 2010 中,VBA 的所有工具都集中在“开发工具”选项卡下,但这个选项卡默认是隐藏的。
- 点击左上角的 “文件” 选项卡。
- 选择 “选项”。
- 在弹出的 “Excel 选项” 窗口中,选择左侧的 “自定义功能区”。
- 在右侧的 “主选项卡” 列表中,勾选 “开发工具” 复选框。
- 点击 “确定”。
你可以在 Excel 顶部菜单栏看到 “开发工具” 选项卡了。
3 你的第一个 VBA 程序:录制宏
录制宏是学习 VBA 最简单、最快的方式,它会把你的一系列操作转换成 VBA 代码。
示例:录制一个简单的格式化宏

- 点击 “开发工具” 选项卡。
- 在 “代码” 组中,点击 “录制宏”。
- 在弹出的对话框中:
- 宏名:输入一个有意义的名字,
FormatHeader。(不要有空格,可以使用下划线_) - 快捷键:可以设置一个快捷键,
Ctrl+Shift+H。(注意:Ctrl+字母是内置的,最好用Ctrl+Shift) - 保存在:选择 “当前工作簿”,这样宏才能随文件一起保存。
- 说明:可以简单描述一下这个宏是做什么的。
- 宏名:输入一个有意义的名字,
- 点击 “确定”,录制已经开始。
- 在工作表中执行以下操作:
- 选中 A1 单元格。
- 输入文字 "销售报表"。
- 选中 A1:C1 区域。
- 点击 “开始” 选项卡,将字体设置为 “加粗”,“居中”,并填充一个背景色(比如浅蓝色)。
- 调整列宽,让文字显示完整。
- 操作完成后,回到 “开发工具” 选项卡,点击 “停止录制”。
如何运行你录制的宏?
- 选中任意一个单元格。
- 按
Ctrl+Shift+H(你设置的快捷键),或者: - 点击 “开发工具” -> “宏”,在列表中选择
FormatHeader,然后点击 “执行”。
你会发现,刚才录制的格式化操作被完美地复现了!
4 查看和编辑录制的代码
录制的宏背后就是 VBA 代码,我们来一探究竟。
- 点击 “开发工具” -> “宏”。
- 选择
FormatHeader,然后点击 “编辑” 按钮。
一个名为 “Microsoft Visual Basic for Applications” 的窗口(简称 VBE 编辑器)会弹出来。

你会看到类似下面的代码:
Sub FormatHeader()
' 格式化表头
With Selection.Font
.Name = "宋体"
.FontStyle = "常规"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 12611584 ' 这是浅蓝色的代码
.TintAndShade = 0
.PatternTintAndShade = 0
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
End Sub
代码解读:
Sub ... End Sub:定义了一个名为FormatHeader的宏(过程)。- 单引号后面的内容是注释,程序会自动忽略,用于解释代码。
With ... End With:这是 VBA 的一个简化结构,表示接下来的所有操作都是针对Selection(当前选中区域)的.Font(字体)属性。- 点号表示“对象的属性”,
.Name是名字,.Size是大小。
第二部分:VBA 核心基础
1 VBE 编辑器介绍
熟悉 VBE 编辑器是编写 VBA 代码的第一步。
- 菜单栏:文件、编辑、视图、插入、调试、运行、工具等。
- 工具栏:包含常用命令,如“运行子过程/用户窗体”、“中断”、“设计模式”、“属性窗口”等。
- 工程资源管理器:显示当前工作簿的所有 VBA 组件,可以在这里插入模块(存放代码)、工作表(存放与特定工作表相关的代码)、工作簿(存放与整个工作簿相关的代码)。
- 属性窗口:显示和设置选中对象(如工作表、模块、按钮)的属性,选中一个模块,可以在属性窗口修改它的
Name。 - 代码窗口:在这里编写、查看和编辑你的 VBA 代码。
2 VBA 基本语法
A. 变量
变量是存储数据的容器,在使用变量前,最好先声明它。
-
声明变量:使用
Dim语句。Dim MyName As String ' 声明一个名为 MyName 的字符串变量 Dim MyAge As Integer ' 声明一个名为 MyAge 的整数变量 Dim MyPrice As Double ' 声明一个名为 MyPrice 的双精度浮点数变量 Dim IsCompleted As Boolean ' 声明一个名为 IsCompleted 的布尔值变量 (True/False)
-
赋值:使用 号。
MyName = "张三" MyAge = 30 MyPrice = 99.98 IsCompleted = True
B. 注释
- 单行注释:使用英文单引号 。
- 多行注释:在 VBA 7.1 及更高版本(Excel 2010 支持)中,可以使用
Rem关键字,但更通用的方法是使用单引号。
C. 常量
常量的值在程序运行期间不会改变。
Const PI As Double = 3.14159 Const CompanyName As String = "ABC科技有限公司"
D. 运算符
- 算术运算符: (加), (减), (乘), (除),
^(乘方),Mod(取余)。 - 比较运算符: (等于),
<>(不等于),>(大于),<(小于),>=(大于等于),<=(小于等于),结果为True或False。 - 逻辑运算符:`
