夜雨聆风学习资料网

ARTICLE · 1332440

用 AI 写 Excel VBA ②:提示词写对,代码一次跑通

用 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 Worksheet    Dim lastRow As Long, i As Long    Dim emptyCount As Long, deletedCount As Long    Dim msg As String    Dim rng As Range    On Error GoTo ErrorHandler    '关闭屏幕刷新,提速    Application.ScreenUpdating = False    '指定工作表    Set ws = ThisWorkbook.Sheets("销售数据")    '找到最后一行    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row    '先数一下有多少空行,用于确认    emptyCount = 0    For i = lastRow To 2 Step -1        Set rng = ws.Range("A" & i & ":F" & i)        If Application.WorksheetFunction.CountA(rng) = 0 Then            emptyCount = emptyCount + 1        End If    Next i    '如果没有空行,直接提示退出    If emptyCount = 0 Then        MsgBox "未找到空行,无需删除。", vbInformation        GoTo CleanUp    End If    '弹窗确认    msg = "共找到 " & emptyCount & " 行空行(A-F 列全空)。" & vbCrLf & vbCrLf    msg = msg & "是否确认删除?" & vbCrLf    msg = msg & "(建议先备份文件)"    If MsgBox(msg, vbYesNo + vbQuestion, "确认删除") <> vbYes Then        MsgBox "已取消删除操作。", vbInformation        GoTo CleanUp    End If    '执行删除(从下往上)    deletedCount = 0    For i = lastRow To 2 Step -1        Set rng = ws.Range("A" & i & ":F" & i)        If Application.WorksheetFunction.CountA(rng) = 0 Then            ws.Rows(i).Delete            deletedCount = deletedCount + 1        End If    Next i    '完成报告    MsgBox "删除完成!共删除 " & deletedCount & " 行空行。", vbInformation    '恢复屏幕刷新CleanUp:    Application.ScreenUpdating = True    Exit SubErrorHandler:    MsgBox "运行出错:" & Err.Description, vbCritical    Resume CleanUpEnd Sub

🔍 逐段拆解:为什么这段代码"靠谱"

关键设计

对应提示词里的哪条规则

为什么重要

For i = lastRow To 2 Step -1

"从最后一行往上删"

正序删行会跳行漏删(删了第 5 行,原来的第 6 行变成新的第 5 行,循环就跳过了)

CountA(rng) = 0

"A-F 列全空才算空行"

精确匹配你的业务定义,不会误删只有 A 列为空但其他列有数据的行

MsgBox 确认弹窗

"删除前弹窗确认"

防止误操作,给你反悔机会

On Error GoTo

"包含错误处理"

即使出意外,也能恢复屏幕刷新并给出友好提示,而不是 Excel 直接崩

Application.ScreenUpdating = False

隐含在"简洁、专业"的角色设定里

AI 知道专业代码要关屏幕刷新来提速

你看:代码里的每一个"靠谱设计",都能在提示词里找到对应的来源。这就是公式的力量——你规定得越细,AI 写得越准。


🛠️ 实战演练:套公式写你自己的需求

现在轮到你了。拿你手头的一个真实需求,按这个公式填表:

要素

你要填的内容

角色

你是一个 Excel VBA 专家

对象

工作表名:,数据范围:,数据从哪行开始:____

动作

我要做什么:____

规则

条件 1:
条件 2:

例外情况:____

输出

要注释 □   要错误处理 □   要确认弹窗 □   不要 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 的框架),我可以在评论区帮你写成完整提示词。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料