乐于分享
好东西不私藏

Excel 宏与 VBA 入门

Excel 宏与 VBA 入门

在日常工作中,你是否经常需要重复执行相同的操作?例如:每天将报表格式化、每月将多个工作表合并、批量处理上百个文件……这些任务都可以通过 宏(Macro) 和 VBA(Visual Basic for Applications) 实现自动化。

本教程将从零开始,讲解宏的录制、VBA 编辑器的使用、基本语法以及常用自动化案例,帮助你迈出编程的第一步。


一、什么是宏和 VBA?

  • :一组记录下来的操作指令,可以一键重复执行。

  • VBA:Excel 背后的编程语言,你可以编写代码实现更复杂的逻辑。

学习路径

  1. 录制宏(无需写代码,适合简单重复操作)。

  2. 阅读并修改录制的代码。

  3. 自己编写简单的 VBA 程序。


二、启用开发工具选项卡

默认情况下,“开发工具”选项卡是隐藏的。

开启步骤

  1. 文件 → 选项 → 自定义功能区。

  2. 在右侧主选项卡中勾选 开发工具

  3. 确定。

现在你可以在功能区看到“开发工具”选项卡,包含:Visual Basic、宏、录制宏、使用相对引用等按钮。


三、录制宏(零代码入门)

案例:录制一个“设置标题格式”的宏

  1. 开始录制:开发工具 → 录制宏 → 输入宏名(如“标题格式”),可设置快捷键(如 Ctrl+Shift+H),保存位置选“当前工作簿”。

  2. 执行操作

    • 选中标题行,设置字体加粗、背景色、字号14。

    • 调整列宽。

  3. 停止录制:开发工具 → 停止录制(或点击左下角方块按钮)。

运行宏

  • 快捷键 Ctrl+Shift+H

  • 或开发工具 → 宏 → 选择宏 → 执行。

查看录制的代码

  1. 开发工具 → Visual Basic(或 Alt+F11)。

  2. 左侧工程资源管理器 → 模块 → 双击 Module1。

  3. 你会看到类似下面的代码:

    Sub 标题格式()'' 标题格式 宏''    

          Rows("1:1").Select

          With Selection.Font        

                   .Bold = True        

                   .Size = 14    

          End With    

         Selection.Interior.Color = RGB(0, 112, 192)    

          Columns("A:C").Select    

          Selection.ColumnWidth = 15

    End Sub

这就是 VBA 代码!你可以直接修改它(例如更改颜色、字体)。


四、VBA 编辑器基础

打开方式

  • 快捷键 Alt+F11

  • 开发工具 → Visual Basic。

主要窗口

  • 工程资源管理器(Ctrl+R):显示所有打开的工作簿、工作表、模块。

  • 代码窗口:编写和修改代码。

  • 立即窗口(Ctrl+G):调试时输出信息。

插入模块

右键工程 → 插入 → 模块。把代码写在模块中。

运行代码

  • 光标放在过程内,按 F5

  • 或点击工具栏的绿色小三角。


五、VBA 基本语法

1. 变量声明

Dim 变量名 As 数据类型

常用数据类型:Integer(整数)、Long(长整数)、String(文本)、Double(小数)、Boolean(布尔)、Variant(任意类型,默认)。

Dim i As Integer
Dim sName As String
Dim dValue As Double

强制声明变量:在模块顶部写 Option Explicit,可以避免拼写错误。

2. 赋值和运算

i = 10
sName = "张三"
dValue = 3.14
Range("A1").Value = 100   ' 将100写入A1单元格

3.条件语句

If 条件 Then    
' 条件为真时执行
ElseIf 条件2 Then    
' 条件2为真时执行
Else    
' 条件均为假时执行
End If

示例:

If Range("A1").Value > 60 Then    
Range("B1").Value = "及格"
Else    Range("B1").Value = "不及格"
End If

4. 循环语句

For 循环(已知次数)

For i = 1 To 10    
Cells(i, 1).Value = i * 2   ' 第i行第1列写入i*2
Next i

For Each 循环(遍历集合)

Dim rng As Range
For Each rng In Selection    
rng.Value = rng.Value + 1   ' 选中区域每个单元格加1
Next rng

Do While 循环

i = 1
Do While i <= 10    
Cells(i, 1).Value = i    
i = i + 1
Loop

5. 常用对象和属性

对象
说明
示例
Workbooks
工作簿集合
Workbooks("数据.xlsx").Close
Workbook
单个工作簿
ThisWorkbook
 当前宏所在工作簿
Worksheets
工作表集合
Worksheets("Sheet1").Select
Worksheet
单个工作表
ActiveSheet
 当前激活的工作表
Range
单元格区域
Range("A1:B10")
Cells(2,3)
Selection
当前选中的区域

常用属性和方法:

  • .Value:单元格的值

  • .Interior.Color:背景色

  • .Font.Bold:字体加粗

  • .Copy / .Paste:复制粘贴

  • .Clear:清除内容

  • .Delete:删除


六、实战案例:自动化常见任务

案例1:一键格式化报表(美化)

Sub 美化报表()    ' 设置标题行    
With Rows("1:1")        
     .Font.Bold = True        
     .Font.Size = 12        
     .Interior.Color = RGB(79, 129, 189)   ' 深蓝色        
     .Font.Color = RGB(255, 255, 255)      ' 白色字体    
End With    ' 设置数据区域自动调整列宽    
Columns("A:D").AutoFit    ' 给数据区域添加边框    
Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
End Sub

七、VBA 中的事件

事件是当特定动作发生时自动执行的代码。例如:打开工作簿、更改单元格内容、激活工作表等。

常用事件(放在对应工作表或 ThisWorkbook 对象中)

  • Worksheet_Change:单元格内容改变时触发。

  • Worksheet_SelectionChange:选中区域改变时触发。

  • Workbook_Open:打开工作簿时触发。

  • Workbook_BeforeClose:关闭前触发。

八、调试与错误处理

调试工具

  • F8:逐行执行代码(单步调试)。

  • 设置断点:点击代码左侧灰色区域,程序运行到该行会暂停。

  • 立即窗口:输入 ?Range("A1").Value 查看值。

错误处理

Sub 安全代码()    
  On Error GoTo 错误处理    ' 可能出错的代码    
  Range("不存在的工作表").Select    
  Exit Sub
  错误处理:    
  MsgBox "出错了:" & Err.Description
End Sub

使用 On Error Resume Next 忽略错误(慎用)。


九、宏安全性设置

为了防止病毒,Excel 默认禁用宏。

设置方法:文件 → 选项 → 信任中心 → 信任中心设置 → 宏设置 → 选择“启用所有宏”(不推荐)或“禁用所有宏,并发出通知”(推荐)。个人开发时可将自己的文件所在文件夹设为受信任位置。


十、常见问题与解决

问题
原因
解决方法
宏无法运行
安全性设置为禁用
启用宏或保存为 .xlsm 格式
录制宏时无法使用某些操作
部分操作不可录制
需要手写代码
运行时错误 '1004'
对象不存在或权限问题
检查工作表名、区域是否有效
代码运行慢
频繁操作屏幕和选择
使用 Application.ScreenUpdating = False
撤销按钮无效
宏无法撤销
运行宏前手动备份数据

十一、总结

学习阶段
目标
录制宏
自动执行重复操作,无需代码
修改录制的代码
调整参数、增加简单逻辑
编写简单 VBA
循环、条件判断、操作单元格
编写自动化工具
合并文件、发送邮件、数据清洗

建议

  • 遇到问题时,使用 MsgBox 或 Debug.Print 输出中间值。

  • 多看别人写的代码(录制宏后分析是很好的学习方式)。

  • 将常用代码保存在个人宏工作簿 (PERSONAL.XLSB) 中,所有文件都可以使用。

恭喜你又学到最后咯,是不是今天学的感觉不一样呢 加油我和大家在一起学习。