ARTICLE · 1332441
用 AI 写 Excel VBA ②:提示词写对,代码一次跑通
系列名称:用 AI 写 Excel VBA|20 节零基础实战课
适用环境:Microsoft 365 / Excel 2016+ 桌面版,Windows(WPS 需另装 VBA 插件,Mac 部分 API 不支持)
阅读时长:约 9 分钟
难度:⭐⭐(零基础可跟,重点是"会说话")
🎯 一句话成果
今天你学会一个万能提示词公式:角色+对象+动作+规则+输出。以后不管什么需求,套进去就能让 AI 一次给出能直接跑的 VBA 代码,不用再反复改八遍。

📌 场景痛点
第 1 讲你跑通了第一个宏,很爽。
但接下来你大概率会遇到这个场景:
你:帮我写个宏,把空行删掉。
AI:好的,这是代码……(给你一段)
你:运行报错了。
AI:抱歉,请试试这个……
你:还是不对。
AI:那这样呢……
……改了八遍,还是没跑通。
问题不在 AI,在你没把需求说清楚。
AI 不是你肚子里的蛔虫。你心里想的"空行"可能是"整行全空的行",也可能是"A 列为空就算空行";你心里想的"删掉"可能是"直接删",也可能是"先备份再删"。这些没说出来的前提,AI 只能猜,一猜就错。
今天教你一个公式,把"模糊需求"变成"AI 能精准执行的指令"。
🧠 万能提示词公式:R + O + A + R + O
字母 | 要素 | 它在回答什么问题 | 必填? |
|---|---|---|---|
R | Role 角色 | 你是谁?你要 AI 扮演什么专家? | ✅ 必填 |
O | Object 对象 | 对哪个表、哪个区域、哪些数据操作? | ✅ 必填 |
A | Action 动作 | 要做什么?增删改查、格式化、发送邮件? | ✅ 必填 |
R | Rule 规则 | 什么条件?什么边界?什么例外? | ✅ 必填(越细越好) |
O | Output 输出 | 代码要什么格式?要不要注释?要不要错误处理? | ✅ 必填 |
一句话记法:"你是谁,对什么,做什么,按什么规矩,给我什么结果。"

🔍 对比实验:同一个需求,三种写法
❌ 翻车写法(你现在的写法)
帮我写个宏,把空行删掉。AI 会怎么猜:
哪个表?→ 猜 Sheet1 什么叫"空行"?→ 猜整行每个单元格都为空 从哪行开始?→ 猜从第 1 行 删完要不要提示?→ 不提示 要不要备份?→ 不备份 代码要不要注释?→ 不写
结果:大概率报错,或者删了你不想删的行,而且你不知道它删了哪些。
⚠️ 及格写法(加了角色和对象)
你是一个 Excel VBA 专家。请在 Sheet1 里把空行删掉。AI 的猜测减少了,但"空行"的定义仍然模糊。如果 Sheet1 的第 1 行是标题行,它可能被误删(因为标题行之外的某些行可能只有部分列为空)。
✅ 满分写法(套用完整公式)
【角色】你是一个资深 Excel VBA 开发专家,擅长写简洁、带注释、带错误处理的代码。【对象】工作簿中有一个工作表名为"销售数据",数据从第 2 行开始(第 1 行是标题行),A 列到 F 列有数据,共约 500 行。【动作】删除所有空行。【规则】- "空行"的定义:A 列到 F 列全部为空的行才算空行(如果某行只有 A 列为空但 B-F 有数据,不算空行)- 从最后一行往上删(避免跳行漏删)- 删除前弹窗确认,显示将删除多少行,让用户选择"是/否"- 删除完成后弹窗报告实际删除了多少行【输出】- 给出完整可运行的 VBA 代码- 每段代码加中文注释- 包含错误处理(On Error)- 不要使用 Select 和 Activate
结果:AI 一次给出的代码,90% 概率能直接跑通,而且行为完全符合你的预期。

📋 满分写法下 AI 给的代码(完整可运行)
💡 先别管代码细节,感受一下:这段代码自带确认弹窗、自带计数、自带错误处理,全是因为你在提示词里说了。
Sub 删除空行_安全版()'========================================'功能:删除"销售数据"表中 A-F 列全空的行'规则:从下往上删、删除前确认、完成后报告'========================================Dim ws As WorksheetDim lastRow As Long, i As LongDim emptyCount As Long, deletedCount As LongDim msg As StringDim rng As RangeOn Error GoTo ErrorHandler'关闭屏幕刷新,提速Application.ScreenUpdating = False'指定工作表Set ws = ThisWorkbook.Sheets("销售数据")'找到最后一行lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row'先数一下有多少空行,用于确认emptyCount = 0For i = lastRow To 2 Step -1Set rng = ws.Range("A" & i & ":F" & i)If Application.WorksheetFunction.CountA(rng) = 0 ThenemptyCount = emptyCount + 1End IfNext i'如果没有空行,直接提示退出If emptyCount = 0 ThenMsgBox "未找到空行,无需删除。", vbInformationGoTo CleanUpEnd If'弹窗确认msg = "共找到 " & emptyCount & " 行空行(A-F 列全空)。" & vbCrLf & vbCrLfmsg = msg & "是否确认删除?" & vbCrLfmsg = msg & "(建议先备份文件)"If MsgBox(msg, vbYesNo + vbQuestion, "确认删除") <> vbYes ThenMsgBox "已取消删除操作。", vbInformationGoTo CleanUpEnd If'执行删除(从下往上)deletedCount = 0For i = lastRow To 2 Step -1Set rng = ws.Range("A" & i & ":F" & i)If Application.WorksheetFunction.CountA(rng) = 0 Thenws.Rows(i).DeletedeletedCount = deletedCount + 1End IfNext i'完成报告MsgBox "删除完成!共删除 " & deletedCount & " 行空行。", vbInformation'恢复屏幕刷新CleanUp:Application.ScreenUpdating = TrueExit SubErrorHandler:MsgBox "运行出错:" & Err.Description, vbCriticalResume CleanUpEnd Sub
🔍 逐段拆解:为什么这段代码"靠谱"
关键设计 | 对应提示词里的哪条规则 | 为什么重要 |
|---|---|---|
| "从最后一行往上删" | 正序删行会跳行漏删(删了第 5 行,原来的第 6 行变成新的第 5 行,循环就跳过了) |
| "A-F 列全空才算空行" | 精确匹配你的业务定义,不会误删只有 A 列为空但其他列有数据的行 |
| "删除前弹窗确认" | 防止误操作,给你反悔机会 |
| "包含错误处理" | 即使出意外,也能恢复屏幕刷新并给出友好提示,而不是 Excel 直接崩 |
| 隐含在"简洁、专业"的角色设定里 | AI 知道专业代码要关屏幕刷新来提速 |
你看:代码里的每一个"靠谱设计",都能在提示词里找到对应的来源。这就是公式的力量——你规定得越细,AI 写得越准。
🛠️ 实战演练:套公式写你自己的需求
现在轮到你了。拿你手头的一个真实需求,按这个公式填表:
要素 | 你要填的内容 |
|---|---|
角色 | 你是一个 Excel VBA 专家 |
对象 | 工作表名:,数据范围:,数据从哪行开始:____ |
动作 | 我要做什么:____ |
规则 | 条件 1: |
输出 | 要注释 □ 要错误处理 □ 要确认弹窗 □ 不要 Select/Activate □ |
填完之后,把这段提示词丢给 AI,看看一次能不能跑通。
📌 三个进阶技巧
技巧 1:给 AI 看你的表结构
在提示词里贴表头 + 前 3 行示例数据(脱敏后),AI 的理解准确率会大幅提升:
表结构如下(已脱敏):| 日期 | 部门 | 姓名 | 金额 | 状态 || 2026/1/1 | 销售部 | 甲 | 5000 | 已审核 || 2026/1/2 | 技术部 | 乙 | 3000 | 待审核 |
技巧 2:指定"不要做什么"
很多时候,告诉 AI 不要做什么比告诉它要做什么更有效:
- 不要使用 Select 和 Activate- 不要修改原始数据的格式- 不要删除包含公式的行- 不要弹出超过 2 个确认框
技巧 3:让 AI 先解释再写
如果需求比较复杂,先让 AI 解释它的理解,确认无误后再让它写代码:
请先用 3 句话概括你对这个需求的理解,我再确认后你再写代码。⚠️ 坑与排错
如果你遇到…… | 原因 | 解决 |
|---|---|---|
AI 给的代码还是报错 | 提示词里"对象"描述不清,比如表名写错了 | 检查工作表名是否和 Excel 里完全一致(包括空格) |
AI 写的代码能跑但行为不对 | "规则"没写细,AI 按默认理解走了 | 在提示词里补一条规则,比如"注意:第 1 行是标题行,不要动" |
AI 给的代码太长看不懂 | 没在"输出"里要求简洁 | 加一句"代码尽量简洁,核心逻辑不超过 30 行" |
AI 说"我无法执行" | 需求涉及文件操作但没说明路径 | 在"对象"里补上文件路径,比如"文件在 D:\报表" |
📌 本讲小结
你今天学会了 | 对应能力 |
|---|---|
万能提示词公式 R+O+A+R+O | 把模糊需求变成精准指令 |
三种写法对比 | 理解"为什么 AI 会猜错" |
满分提示词的 5 个要素 | 每次都能套用 |
三个进阶技巧 | 给表结构、指定不要做什么、先确认再写 |
核心认知:AI 写 VBA 的能力已经很强了,差距在于你会不会"提需求"。你越像一个专业的产品经理,AI 就越像一个专业的程序员。

📢 下节预告
第 3 讲|代码贴进去之前,先认识 VBA 编辑器
你已经会写提示词了,但代码贴进去之后,编辑器里那些窗口、按钮、菜单都是干嘛的?Sub 和 End Sub 到底是什么?为什么有时候代码是红色的字?下一讲带你认识 VBA 编辑器的"五脏六腑",让你不再对着它发怵。
💬 互动时间
用今天学的公式,写一条你自己的提示词,贴在评论区。我会挑 3 条帮你看看有没有可以优化的地方。
如果你现在手头正好有个 Excel 重复操作想自动化,直接描述你的需求(用 R+O+A+R+O 的框架),我可以在评论区帮你写成完整提示词。















































































