Skip to content

Office VBA 宏录制与 Excel 自动化入门 ​

VBA 适合桌面 Office 中重复的对象操作。先看是否可由公式、模板或 Power Query 完成,再决定写宏;自动化前应能手工描述正确步骤。Excel 网页版不运行 VBA 宏,Mac 上部分 Windows 特有接口也不可照搬。

图示跟练在限定练习范围内录制并运行宏

点击步骤切换图示,再到 Office 中跟做;每一步都可跳到下方详细说明。

Excel练习文件 · 界面示意
③ 录制宏操作 / 设置示意

宏名:FormatPractice

保存到:当前工作簿

详细输入与检查见本步正文 ↓
简化示意,非软件截图。以 Windows 中文界面为主,实际按钮位置与功能取决于版本;可在应用搜索框查找命令。

录制一个最小宏 ​

在练习工作簿副本中,通过“文件 → 选项 → 自定义功能区”启用“开发工具”。选择“录制宏”,名称用 FormatPractice,保存到当前工作簿,完成一次表头加粗和填充色操作后停止录制。打开 Visual Basic 编辑器,找到相应模块查看记录的代码。

录制器记录操作,不理解你的业务目标。它可能依赖当前活动工作表和选择区域,也可能记录很多多余选择动作。不要在未查看代码的情况下把录制宏绑定到常用快捷键并用于真实文件。

一个明确限定范围的例子 ​

新建独立练习副本,把八条订单放在名为 订单练习 的工作表 A1:H9。此例会重写 H2:H9 的金额公式并调整该区域格式,因此只用于该练习结构。在当前工作簿中新建标准模块,粘贴:

vb
Option Explicit

Sub FormatPractice()
    Dim ws As Worksheet
    On Error GoTo Failed
    Set ws = ThisWorkbook.Worksheets("订单练习")

    If ws.Range("E1").Value <> "数量" Or _
       ws.Range("F1").Value <> "单价" Or _
       ws.Range("H1").Value <> "金额" Then
        MsgBox "练习表结构不符,请先检查列标题。"
        Exit Sub
    End If

    ws.Range("H2:H9").FormulaR1C1 = "=RC[-3]*RC[-2]"
    ws.Range("H2:H9").NumberFormat = "0.00"
    ws.Range("A1:H1").Font.Bold = True
    ws.Range("A1:H1").Interior.Color = RGB(221, 235, 247)
    ws.Range("A:H").AutoFit
    ws.Calculate
    MsgBox "练习表已更新,请核对金额合计为 5120。"
    Exit Sub
Failed:
    MsgBox "未完成:" & Err.Description
End Sub

ThisWorkbook 表示保存该宏的工作簿,不是恰好位于前台的另一个文件。RC[-3] 在 H 列指向同一行的 E 列,RC[-2] 指向 F 列。公式逐行计算数量乘单价。FormulaR1C1 官方定义

保存与运行 ​

另存为 .xlsm 以保存宏,关闭后重新打开确认宏仍在。执行前确认宏来源、目标工作簿和表名;系统或组织阻止宏时按批准的流程处理,不通过关闭所有宏安全限制解决。宏通常不能像普通编辑那样依赖撤销恢复,因此先保留副本。

代码先检查列标题,但这不等于全面校验数据类型。若写入过程半途失败,前面的修改可能已生效;这个短例子没有事务回滚。出错后检查范围实际内容,必要时从副本恢复,而不是假定弹出错误就什么都没改。

练习与验收 ​

运行后检查八行金额和 5120 总额;再次运行不应增加新行或重复数据。把工作表改名后运行,应报错而不是操作其他活动工作表;把 E1 改成其他文字,应显示结构提示。恢复名称和标题,再验证正常流程。

此示例按官方对象接口编写,未在你的本机 Office 中执行。扩展到真实任务前还要增加数据范围、输入类型、备份和失败处理设计。

图示跟做:在限定练习范围内录制并运行宏 ​

按上方图示切换三个关键步骤;下面保留完整操作和检查结果,便于跟做与回查。请先使用练习副本。

第 1 步:录制一个看得懂的操作 ​

定位:开发工具 → 录制宏。

在练习副本中显示开发工具选项卡,点击录制宏,命名 FormatPractice,保存到当前工作簿。只做表头加粗和底色两项操作,然后停止录制。不要先选中整张工作表做批量删除等动作,小范围录制更容易看出代码真正影响的对象。

第 2 步:阅读对象边界再运行 ​

定位:开发工具 → Visual Basic。

打开 Visual Basic 编辑器查看刚录制的过程,观察 Range、Selection、ActiveSheet 等对象。本篇固定示例会重写订单练习表 H2:H9 的公式,运行前应按正文准备正确表名与表头。不要把未知代码粘贴后直接在正式文件里试验。

第 3 步:保存、重开并检查重复执行 ​

定位:开发工具 → 宏。

另存为启用宏工作簿 xlsm,关闭再打开,在组织允许的信任设置下运行已检查的练习宏。核对表头格式和 H2:H9 金额,合计仍为 5120;再运行一次,应该没有新增重复数据。记录修改范围,保留运行前副本。

没有得到预期结果时 ​

xlsx 不能保留 VBA 宏项目。不要为了运行教程去全局启用所有宏或关闭组织安全策略;按钮不可用时先确认文件来源、格式与管理员设置。

继续阅读