EXCEL VBA × WORKBUDDY 复杂任务实践
如何用 WorkBuddy 高效学习 Excel VBA:客户回访窗体全流程实战
从真实项目读取、提示词拆解到窗体写回与边界验收

很多人学习 VBA 时,习惯先问“这段代码怎么写”。但进入真实业务后,难点往往不在某一段语法,而在于如何把工作簿结构、业务规则、窗体交互、数据写回和验收证据串成一条完整链路。
本案例以“客户回访待办与跟进登记”为题,在 Excel VBA 中制作一个轻量 UserForm,并借助 WorkBuddy 完成项目读取、窗体设计、YAML 校验、代码生成、问题修正和业务验收。窗体刻意控制为 4 个输入、4 个按钮,重点不是堆控件,而是证明一个小工具也能具备清晰、可验证、可维护的业务闭环。
AI 不应该只给出一段看起来正确的代码。更可靠的协作方式,是让它先理解数据和规则,再分阶段交付界面、逻辑与验收证据。
一、先明确要解决的业务问题
原工作簿包含客户信息、回访规则、历史记录和待办看板。回访人员如果直接在多张表之间来回切换,容易出现三类问题:漏填下一次回访日期、覆盖历史记录、修改了客户状态却忘记刷新看板。

客户清单中的原始回访数据
因此,本案例把目标定义为一个简单但完整的动作链:
输入客户编号并查询当前状态;
选择回访结果,填写下次回访日和备注;
先预览本次操作会带来的影响;
再次确认后追加回访记录;
同步更新客户清单和待办看板;
关闭并重新打开窗体,确认结果已经持久化。
这六步决定了后面的窗体结构和提示词写法。只有先把动作链讲清楚,AI 才不会把任务误解成“做一个能填写信息的表单”。
二、四张表各负其责
工作簿不依赖外部数据库,所有事实和结果都保存在四张工作表中。
| 工作表 | 主要职责 | 关键字段或指标 |
|---|---|---|
| 客户清单 | 保存客户当前回访状态 | 客户编号、优先级、状态、下次回访日 |
| 回访规则 | 约束不同回访结果的必填项 | 回访结果、是否要求下次日期、状态变化 |
| 回访记录 | 追加式保存每次回访事实 | 客户编号、日期、结果、备注、操作时间 |
| 待办看板 | 汇总当前业务指标 | 待回访、今日到期、高优先级、记录数 |
这里最重要的是区分“当前状态”和“历史事实”。客户清单只保存当前状态,回访记录则只能追加,不能覆盖旧记录;待办看板应根据事实重新汇总,而不是依赖窗体里临时显示的数字。
三、WorkBuddy 第一问:先设计窗体,不急着写业务逻辑
打开 WorkBuddy 后,新建任务并加入 VBAYYDS 导出的项目目录。模型直接沿用 WorkBuddy 当前已经设置好的默认模型,不需要打开模型菜单,也不需要重新选择。
第一条提示词如下:
按 VBA 技能和 VBA 窗体技能执行。读取当前工作簿的客户清单、回访规则、回访记录、待办看板。使用薄荷水蓝(aqua-mint)主题和明亮浅色外观,先建立客户回访待办与跟进登记窗体 YAML 并打开真实设计预览,暂不写业务逻辑。窗体只保留客户编号、回访结果、下次回访日、回访备注 4 个输入,以及查询、预览、确认写回、关闭 4 个按钮。预览后等待我确认生成。

WorkBuddy 中发送第一阶段窗体设计提示词
这条提示词包含五个关键部分:
指定能力范围:明确使用 VBA 与 VBA 窗体相关技能,避免模型把任务做成网页或普通表格;
指定数据来源:直接列出四张表,让 AI 知道需要读取哪些业务信息;
指定视觉方向:用“薄荷水蓝、明亮浅色”描述观感,比只说“好看一点”更可执行;
限制窗体规模:4 个输入、4 个按钮,防止自动增加复杂分页、列表或无关控件;
设置阶段边界:先做 YAML 和真实预览,暂不写业务逻辑,等人工确认后再继续。
这类写法的价值,是把一个大任务拆成可检查的小交付。界面方向不对时,只需修改 YAML,不必等大量 VBA 代码写完后再返工。
四、让 WorkBuddy 先读取项目,而不是凭空猜列号
收到任务后,WorkBuddy 会读取项目配置、工作簿结构和技能说明,再决定如何建立窗体。这个阶段应关注它是否真正识别了四张表、项目文件以及已经导出的 VBA 结构。

WorkBuddy 读取项目配置与工作簿结构
如果 AI 没有读取真实工作簿就直接开始写代码,列号、表名和字段映射很容易被猜错。提示词中写“读取当前工作簿的四张表”,并把正确的项目目录加入任务,是减少这类错误的关键。
更稳妥的提问方式不是“帮我做一个客户回访窗体”,而是:
先报告你识别到的工作表、关键字段和写回目标,再开始生成。任何表名或字段不确定时,先从项目文件中核对,不要自行假设。
这句话可以作为通用补充,尤其适合列数较多或表名相近的工作簿。
五、YAML 校验和真实预览是第一道质量门
窗体 YAML 创建后,WorkBuddy 会先校验,再调用 VBAYYDS 的真实设计预览。若校验器和预览器对某个属性的要求不同,AI 应根据实际报错修正,而不是绕开检查。

WorkBuddy 根据真实预览报错修正 YAML
截图中可以看到,YAML 的基础校验虽然通过,但真实预览对 ComboBox 的列表属性解析更严格。WorkBuddy 根据报错删除不兼容写法,再重新校验和预览。这个过程说明:“校验通过”不等于“最终可用”,真实工具链的反馈才是下一步修改依据。

WorkBuddy 打开的明亮薄荷水蓝窗体真实预览
真实预览时重点检查四件事:文字是否完整、控件是否对齐、输入区是否过密、主次按钮是否清楚。确认无裁切和遮挡后,再点击“确定生成”。
六、WorkBuddy 第二问:保持界面不变,再补业务逻辑
窗体设计确认后,第二阶段提示词不再讨论配色和布局,而是集中描述业务闭环:
复用当前已经确认的窗体和四张表,保持 4 个输入、4 个按钮及薄荷水蓝布局不变。按照回访规则完成客户查询、输入校验、状态影响预览、第 2 次确认、回访记录追加、客户清单更新、待办看板刷新、保存和重开回读。写回前必须完成全部校验,任何失败都不能留下半写入数据。编译并使用 C006、C008 验收到全部通过。
这条提示词把“不要改什么”和“必须完成什么”同时写清楚。
复用已确认窗体:避免第二阶段重新生成界面;
列出执行顺序:查询、校验、预览、确认、写回、刷新、保存、回读;
规定失败行为:任何失败都不能留下半写入数据;
给出测试对象:用 C006 验证成功路径,用 C008 验证边界拦截;
要求编译和重开:防止只在当前内存状态下看起来正确。
如果中途出现编译或行为问题,后续提问应尽量小而明确。例如:
保持现有窗体布局、控件名称和已通过的业务逻辑不变,只修复当前编译错误。修复后重新编译,并再次运行 C006 与 C008 验收,不要通过删除功能来规避错误。
这种“锁定已通过部分,只修当前问题”的提示词,比重新说一遍完整需求更容易控制改动范围。
七、窗体只保留必要元素
最终窗体包括客户编号、回访结果、下次回访日和回访备注四个输入,以及查询、预览、确认写回和关闭四个按钮。明亮浅色主题提升了录屏和日常使用时的文字辨识度。

查询 C006 后的客户回访登记窗体
“预览”和“确认写回”必须分开。预览只计算将要发生的变化,不修改工作表;用户确认后,程序再次执行校验并写入。只要关键输入发生变化,旧预览就应该失效,防止用户修改内容后沿用旧结果直接提交。
下面是结构示意代码,重点是说明控制思路,不代表项目中的完整实现:
Private m已预览 As Boolean
Private Sub txt备注_Change()
m已预览 = False
End Sub
Private Sub btn确认写回_Click()
Dim 原因 As String
If Not m已预览 Then
MsgBox "请先预览本次回访影响。", vbExclamation
Exit Sub
End If
If Not 校验输入(原因) Then
MsgBox 原因, vbExclamation
Exit Sub
End If
If MsgBox("确认写入回访记录并更新客户状态?", _
vbYesNo + vbQuestion) <> vbYes Then Exit Sub
执行回访写回
End Sub
八、写回前校验,写回后重算
输入校验应集中在真正修改工作表之前。不同回访结果对应不同要求:例如“无人接听”意味着需要安排下一次回访,因此下次回访日不能为空;备注少于 4 个字符时,也不能写入含义不清的历史记录。
' 结构示意:规则驱动的必填校验
If 回访结果需要下次日期(回访结果) Then
If Not IsDate(下次回访日) Then
失败原因 = "该回访结果必须填写下次回访日"
Exit Function
End If
End If
If Len(Trim$(回访备注)) < 4 Then
失败原因 = "回访备注至少填写 4 个字符"
Exit Function
End If
校验全部通过后,按固定顺序追加回访记录、更新客户清单、重新计算待办看板并保存工作簿。看板指标应从当前事实重新汇总,而不是直接在旧数字上加一或减一。数据量可控时,“重算换确定性”比维护多个增减分支更容易核对。
九、用可见数字证明成功路径
主验收选择客户 C006,回访结果为“已解决”,备注为“问题已经处理”。写回后,客户状态由“待回访”变为“已完成”,下次回访日清空,回访记录从 8 条增加到 9 条。

写回后的待办看板
| 验收指标 | 写入前 | 写入后 | 预期变化 |
|---|---|---|---|
| C006 当前状态 | 待回访 | 已完成 | 状态完成 |
| 待回访客户 | 5 | 4 | -1 |
| 今日到期 | 4 | 3 | -1 |
| 高优先级待办 | 3 | 2 | -1 |
| 回访记录数 | 8 | 9 | +1 |
关闭窗体并重新打开后,C006 仍显示“已完成”,看板仍保持 4、3、2、9。这一步排除了“只是窗体界面暂时改变,工作簿没有真正保存”的假成功。
十、边界测试比成功提示更有价值
成功路径只能说明“正常输入时能运行”,边界测试才能说明规则真的生效。

C008 未填写下次回访日时被拦截
当 C008 选择“无人接听”但不填写下次回访日时,程序必须停止写回并提示原因。因为这类结果仍需要跟进,如果允许空日期,客户会从待办流程中消失。

回访备注不足 4 个字符时被拦截
备注长度校验看似简单,却能阻止“好”“已”等无法形成审计线索的记录进入历史流水。边界验收时,还应核对失败前后的回访记录条数,确保拦截没有留下半写入数据。
十一、可复用的 WorkBuddy 提示词结构
以后制作其他 VBA 窗体,可以复用下面的分阶段结构。
阶段一:只做设计
按 VBA 与 VBA 窗体技能执行。读取当前工作簿的【工作表清单】和字段。使用【主题与明暗方向】建立【窗体名称】YAML,并打开真实设计预览,暂不写业务逻辑。窗体只保留【输入项】和【按钮】。预览后等待我确认生成。
阶段二:补齐闭环逻辑
复用已经确认的窗体和工作表,保持布局、控件名称与规模不变。完成【查询】、【校验】、【预览】、【二次确认】、【追加流水】、【更新主表】、【刷新汇总】、【保存】和【重开回读】。任何失败都不能留下半写入数据。
阶段三:按验收数据收口
编译并按【成功样本】验证正常路径,按【边界样本】验证必填、重复、超限或日期规则。逐项报告写入前后数字;关闭并重开后再次核对。只修复失败项,不改变已经确认的界面和已通过逻辑。
一个高质量提示词通常同时包含六种信息:对象、数据源、约束、顺序、失败行为和验收结果。把这六项写清楚,AI 才能从“代码生成器”变成可协作的开发助手。
结语
这个案例没有追求庞大的窗体,而是用 4 个输入和 4 个按钮证明了完整工程思路:先读真实项目,再设计界面;先预览,再生成;先校验,再写入;写完重算,看完重开;最后用成功路径和边界条件共同验收。
学习 VBA 的效率,不只取决于记住多少语法。真正的提升来自把需求表达成清晰的结构,让 WorkBuddy 负责读取、生成、调试和重复验证,而人负责决定业务规则、审查界面、确认结果。这样得到的代码才更接近一套可以继续维护和复用的办公自动化工具。

