乐于分享
好东西不私藏

从0学Excel VBA编程 第2篇:VBA编辑器——你的代码工作台

从0学Excel VBA编程 第2篇:VBA编辑器——你的代码工作台

从0学Excel VBA编程 第2篇:VBA编辑器——你的代码工作台

每天10分钟,认识写代码的地方,迈出编程第一步。


学习目标

  1. 认识 VBA 编辑器的三大窗口:工程窗口、代码窗口、属性窗口
  2. 学会新建模块、在模块中写代码、删除模块
  3. 学会正确保存含有宏的工作簿(.xlsm 格式)

知识点精讲

打开 VBA 编辑器

上一篇文章我们学会了用它打开宏列表。但 VBA 编辑器能做的事情远不止这些——它是你未来写代码、调试代码、管理模块的"总指挥部"。

打开方式(任选一种):

  • 快捷键Alt + F11(最常用,一定要记住)
  • 菜单:开发工具 → Visual Basic
  • 再次按Alt + F11 可以切回 Excel 界面

VBA 编辑器的三大窗口

打开编辑器后,你会看到三个主要区域。如果某个窗口没显示,在菜单栏点击 "视图" 就能找到:

1. 工程资源管理器(左上角)

这是一个树形结构,展示了你当前打开的所有 Excel 工作簿。

VBAProject(工作簿1)  ├── Microsoft Excel 对象  │     ├── Sheet1 (Sheet1)  │     ├── Sheet2 (Sheet2)  │     └── ThisWorkbook  └── 模块        └── Module1

每个工作簿都是一个"工程",下面装着:

  • 工作表对象(Sheet1、Sheet2……):每个工作表对应一个对象,双击可以给这个工作表写专属代码
  • ThisWorkbook:代表整个工作簿,双击可以写工作簿级别的事件代码(后续会讲)
  • 模块(Module):你写代码的主要地方,所有自定义的宏都放在这里面

2. 代码窗口(右侧大片区域)

这就是你将来每天面对的地方——写代码、改代码、删代码全在这里。

代码窗口是"按需显示"的:双击工程窗口里的任意对象(Sheet1、ThisWorkbook、Module1),右侧才会出现对应的代码窗口。

3. 属性窗口(左下角)

显示你当前选中的对象的属性,比如名称、是否隐藏等。对于初学者,可以先不用管这个窗口,知道它在那儿就行。

模块是什么?

模块(Module)就是一个装代码的容器。你写的每一个宏,都需要放在某个模块里。

类比一下:模块就像文件夹,代码就像文件。你不可能把文件直接扔在桌面上,得先建个文件夹放进去。

一个工作簿可以有多个模块,你可以按功能分类:

  • Module1 放数据处理的宏
  • Module2 放格式设置的宏
  • Module3 放报表生成的宏

保存含宏的工作簿

这是一个非常容易踩坑的地方,很多初学者在这栽跟头。

Excel 的默认保存格式是 .xlsx但这种格式不支持保存宏。如果你写了代码却保存为 .xlsx,下次打开代码全没了。

正确做法:

  1. 点击 文件 → 另存为
  2. 在"保存类型"下拉框中选择 "Excel 启用宏的工作簿 (*.xlsm)"
  3. 保存

记住了:有宏 → 存 .xlsm;无宏 → 存 .xlsx。以后凡是写代码的工作簿,一律用 .xlsm


实战案例

案例1:新手入门——打开编辑器 & 创建第一个模块(简单)

功能说明:打开 VBA 编辑器,认识三大窗口,新建一个自己的模块。

操作步骤

  1. 打开 Excel,新建一个空白工作簿
  2. 按 Alt + F11 打开 VBA 编辑器
  3. 观察界面: 
    • 左上角:工程资源管理器,显示 VBAProject(工作簿1)
    • 左下角:属性窗口
    • 右侧:灰色空白区域(还没有打开任何代码窗口)
  4. 点击菜单 "插入" → "模块"
  5. 观察变化: 
    • 工程窗口中出现了"模块"文件夹,下面多了一个"Module1"
    • 右侧自动弹出一个空白代码窗口

检查效果:你已经创建了人生第一个模块!右侧的空白窗口就是未来写代码的地方。


案例2:第一行代码——显示当前时间的宏(中等)

功能说明:在刚才新建的 Module1 中编写一个宏,运行后在活动单元格显示当前的日期和时间。

操作步骤

  1. 在右侧 Module1 的空白代码窗口中,输入以下代码:
Sub 显示当前时间()    ' 在活动单元格中写入当前日期和时间    ActiveCell.Value = NowEnd Sub
  1. 确认你输入的代码完全正确: 
    • Sub 显示当前时间() —— 宏的开头,"显示当前时间"是宏的名字
    • ' 在活动单元格中写入当前日期和时间 —— 这是注释,前面加一个英文单引号 ',VBA 不会执行它
    • ActiveCell.Value = Now —— 把当前日期时间(Now)写入当前选中的单元格
    • End Sub —— 宏的结尾
  2. 回到 Excel 界面(按 Alt + F11 切换)
  3. 点击任意一个空白单元格(比如 A1)
  4. 按 Alt + F8 打开宏列表
  5. 选择"显示当前时间",点击"运行"

结果:A1 单元格出现了当前的日期和时间,格式类似 2026/8/5 6:55:00

小技巧:如果只想要日期,把 Now 改成 Date;只想要时间,改成 Time


案例3:实用小案例——一键清空所选区域并设置表头(实用)

功能说明:编写一个宏,一键执行三个操作:① 清空工作表中的数据 ② 重新设置表头(序号、姓名、部门)③ 设置表头格式(加粗、居中、填色)。这是办公中最常见的"重置模板"需求。

操作步骤

  1. 在 VBA 编辑器中(Alt + F11),确认 Module1 还在
  2. 在刚才代码的下方空一行,粘贴以下代码:
Sub 重置表格模板()    ' 清空当前工作表的全部内容    Cells.Clear    ' 设置表头    Range("A1").Value = "序号"    Range("B1").Value = "姓名"    Range("C1").Value = "部门"    ' 设置表头格式:加粗 + 居中 + 蓝色背景    With Range("A1:C1")        .Font.Bold = True        .HorizontalAlignment = xlCenter        .Interior.Color = RGB(68, 114, 196)        .Font.Color = RGB(255, 255, 255)    End With    ' 调整列宽    Columns("A:C").ColumnWidth = 15    ' 提示完成    MsgBox "模板已重置,可以开始录入数据了!"End Sub
  1. 回到 Excel,务必先保存:文件 → 另存为 → 选择 "Excel 启用宏的工作簿 (*.xlsm)",保存到桌面
  2. 在 Sheet1 中随便输入一些数据,然后按 Alt + F8 运行"重置表格模板"

结果:表格中所有数据被清空,A1:C1 自动出现蓝色表头(序号、姓名、部门),弹窗提示"模板已重置"。

代码讲解(只讲本篇用到的新知识)

  • Cells.Clear — 清除当前工作表所有单元格的内容和格式。类比"撕掉整张白纸"
  • With ... End With — 对同一个对象连续做多件事时,可以把它"提出来",避免重复写对象名。就像你跟一个人说"你去:① 关门 ② 关灯 ③ 锁窗",比"张三去关门。张三去关灯。张三去锁窗"简洁得多
  • RGB(68, 114, 196) — 用红绿蓝三色数值来表示颜色,括号里三个数字分别对应 R(红)、G(绿)、B(蓝),取值范围 0~255

本篇小结

  1. VBA 编辑器是写代码的地方Alt + F11 打开/切换,一定要记住
  2. 模块是装代码的容器,所有宏必须放在模块里,通过"插入 → 模块"创建
  3. 写代码的四个基本步骤:打开编辑器 → 插入模块 → 写代码 → 保存为 .xlsm
  4. Sub 宏名() 和 End Sub 中间就是宏的代码内容
  5. 单引号 ' 开头的是注释,VBA 不会执行,用来给自己做笔记

今天的三个新概念

  • Now = 当前日期 + 时间
  • Cells.Clear = 清空所有单元格
  • With...End With = 批量操作同一个对象

下一篇内容预告

第3篇:变量和基本数据类型——让代码有"记忆"

  • 什么是变量?为什么要用变量?
  • 四种最常用的数据类型:整数、小数、文字、真假
  • 学会用变量来存储和传递数据
  • 下一篇开始,我们将真正理解代码是如何"记住东西"的!

小贴士:Alt + F11 是你在 VBA 世界里最频繁使用的快捷键,就像开车要记住刹车和油门一样。现在练习打开 → 关闭 → 再打开,做 3 遍。