
质量台账里有一批不合格品,需要登记返工数量、更新待处置数量,全部处理完再关闭批次。手工改表时,容易漏记流水,或者把数量扣了两次。
这次用 WorkBuddy 搭配 VBAYYDS语音编程,把这段日常需求变成可运行的 VBA 窗体和业务代码。输入批次号,填写处置信息,先预览,再确认写回。演示批次 QC-009 的待处置数量从 12 变为 0,台账新增 1 条记录,重开窗体后仍显示已关闭。
本文用这个案例说明自然语言怎么写、生成后怎么看、结果怎么验。演示在 WPS 表格的 VBA 环境中完成,使用虚构业务数据,尚未验证所有 Excel 版本的兼容性。
先让表格说明业务

图1 处置前的质量批次表 QC-009待处置12件
工作簿有 3 张业务表。质量批次表保存当前余额,处置记录表保存每次变化,业务参数表提供允许的处置方式和规则说明。这里的“余额”就是还没有完成处置的件数。
| 工作表 | 主要内容 | 本案例中的作用 |
|---|---|---|
| 质量批次 | 18条批次及数量和状态 | 按批次号查询并更新待处置量 |
| 业务参数 | 处置方式及业务规则 | 提供方式列表和演示基准日期 |
| 处置记录 | 每次处置的12个字段 | 保存数量和状态的前后值 |
QC-009 对应 PRD-186 泵体铸件,批次量 500 件,抽检 80 件,不合格 12 件,待处置 12 件。它的不良率为 12 ÷ 80 = 15%。完成返工登记会减少待处置量,不会把历史不合格量改成 0。
关键约束很容易用日常语言说明:数量必须是正整数,不能超过还没处理的数量;批次找不到时不能沿用上一次查询的数据;预览只显示结果,确认后才改表。
用日常语言把需求交给WorkBuddy
在 WPS 表格中进入“工具 → VB 编辑器”,点击 VBAYYDS 菜单的“复制项目路径”。然后到 WorkBuddy 新建任务,把刚复制的项目文件夹加入任务。这里加入的是当前工作簿导出的项目目录。

图2 本案例首轮提示输入完成 项目文件夹已经加入
下面是本次使用的首轮提示原文,保留了实际措辞。
请使用vba相关技能 使用vba窗体完成以下任务。
帮我在这个Excel里做一个质量批次处理工具。输入批次号,就能看到还有多少件没处理。选好处理方式,填数量、日期和负责人,先预览,再确认扣掉待处理数量并留下记录,全部处理完就把批次标成已关闭。数量填多了、批次不存在或重复提交时提醒我。界面做成清爽好看的浅绿色,先让我看看界面。
“请使用vba相关技能”明确技术路线;“输入批次号”说明从哪里开始;“先预览,再确认”限定改表时机;“数量填多了”等描述给出异常处理要求;“先让我看看界面”让第一步停在可检查的设计预览。零基础用户不必先学控件名称和事件函数。
先确认界面再补齐按钮功能

图3 WorkBuddy完成摘要列出了窗体 模块和实际处置结果
预览出现后,先看输入项是否齐全、按钮是否看得清、处理前后的结果是否容易比较。确认界面,再让 WorkBuddy 补齐加载、检查、预览和写回逻辑。本案例最终任务复用了已有窗体草稿,并继续完善业务代码。
语音或自然语言描述可以自动生成窗体;生成后的窗体可在 VBA 中手动编辑和微调。本例保留 5 个输入项、4 个操作按钮和只读结果区。浅绿色负责区分输入与结果,按钮文字直接说明要做什么。
代码主要分为两部分:窗体 frm质量批次处置负责读取输入、提示错误和确认操作;标准模块 m质量批次处置负责批次查询、规则检查、编号、记录写入和保存。数据仍保存在工作簿中,重开窗体时重新读取。
完成摘要用于了解 AI 做了哪些工作,验收还要回到真实窗体和工作表。数量、状态和记录数必须逐项对得上;出现偏差时,说明当前现象和期望结果,让助手继续修正。
预览和确认之间要再检查一次
本例每次预览、确认都会调用“校验全部”,重新读取批次及当前待处置量。这样可以发现批次号被修改,或者表格数据已经变化,避免拿旧查询结果继续扣减。
只接受明确的正整数
“解析正整数”先检查文本是否全部由数字组成,再进行数值转换。以下为项目原码节选。
s = Trim(文本)
If s = "" Then Exit Function
If s Like "*[!0-9]*" Then Exit Function
If Left$(s, 1) = "0" Then Exit Function
If Len(s) > 10 Then Exit Function
Dim v As Double
v = CDbl(s)
If v < 1 Then Exit Function
If v > 2147483647 Then Exit Function
窗体随后检查数量是否超过待处置量,并检查日期、处置方式和责任人。日期按 YYYY-MM-DD 解析,还要位于生产日期与演示基准日期之间。这里解释的是代码规则,不代表所有输入组合都已经运行测试。
修改输入后必须重新预览
预览成功时,窗体保存由批次号、日期、方式、数量、责任人和待处置量组成的“预览签名”。它只是用于比较的一段文本,不是安全认证。确认时重新计算,任何相关内容变化都会要求再预览。
当前签名 = 计算预览签名()
If 当前签名 <> m预览签名 Then
MsgBox "处置信息已变动,请先点击「预览处置」重新预览。", vbExclamation
Exit Sub
End If
本次把 QC-006 的数量 1 预览成功后改成 2,确认被拦截,必须重新预览。
写回记录时保留公式和日期格式

图4 VBA编辑器中的最终业务代码 包含12列记录写入和保存
“执行写回”先准备 1 行 12 列的数组,一次写入记录编号、批次、产品、日期、方式、数量、前后待处置量、前后状态和责任人,再更新质量批次表的待处置量,计算并保存工作簿。
不良率和处置状态继续由原工作表公式计算。QC-009 的 I13 保留 =IF(F13=0,"",G13/F13),J13 保留 =IF(G13=0,"无异常",IF(H13=0,"已关闭","待处置"))。程序只改变待处置量,不把这两格替换成固定结果。
日期写入后显式设置 NumberFormat = "yyyy-mm-dd"。本次记录 E5 的内部数值为 46270,实际显示为 2026-09-05。核对日期时,既要看存进去的值,也要看用户最终看到的格式。
模块还包含写入前的两表 Formula 快照与失败恢复分支。这属于工作表级恢复设计,不是数据库事务;本次没有做故障注入,不能据此声称任何保存失败都可完整恢复。用于正式业务前,还应测试保存失败、保护单元格和多人同时修改等场景。
按窗体完成一笔真实处置

图5 真实运行窗体的预览状态 待处置12变0 此时尚未写回
- 输入 QC-009,点击“加载批次”,确认产品是泵体铸件,待处置量为 12。
- 填写日期 2026-09-05、方式“返工”、数量 12、责任人“赵敏”。
- 点击“预览处置”,检查待处置量 12 → 0,状态“待处置 → 已关闭”。
- 点击“确认写回”,在二次确认中核对数量和状态,再选择确认。选择取消则不改表。
- 查看两张结果表,并重新打开窗体加载同一批次,核对结果是否仍然一致。
| 核验内容 | 处置前 | 确认后 |
|---|---|---|
| 待处置量 H13 | 12 | 0 |
| 处置状态 J13 | 待处置 | 已关闭 |
| 处置记录数 | 0 | 1 |
| 不合格量和不良率 | 12 和 15% | 12 和 15% |
记录编号为 QD20260905-001。它保留了这次处置的前后值,日后查看时能知道由谁处理、处理了多少,以及为什么批次被关闭。
验收不能只看成功提示

图6 处置记录表新增1条完整记录 日期和前后状态均可核对
下面列出实际观察到的操作结果。关闭批次后的再次确认被拦截,与“重复键检查已经单独测试”不是同一件事。
| 实际检查 | 观察结果 |
|---|---|
| QC-009取消二次确认 | 待处置仍为12 记录仍为空 |
| QC-009确认12件返工 | 待处置为0 新增1条记录 |
| 重开QC-009并再次确认 | 回读0和已关闭 再次处置被拦截 |
| 查询不存在的QC999 | 提示不存在 并清除旧批次信息 |
| QC-006待处置4 填数量5 | 超量被拦截 |
| 数量1.5或责任人为空 | 被拦截 |
| QC-006预览1件 再改成2件确认 | 要求重新预览 没有写回 |
测试结束后,QC-006 的待处置量仍是 4,正式记录仍只有 1 条。数量为 0、负数或指数文本、全部日期边界、无异常批次、独立重复键及回滚故障注入,仍应补充测试,不能从一次成功演示推定通过。
换成自己的业务时这样提需求
下面是可替换业务名称和字段的需求模板,不是本次首轮原文。
请使用vba相关技能 使用vba窗体完成以下任务。
帮我在这个表格里做一个登记工具。输入编号,就能找到对应资料;填好本次处理的信息,先让我预览变化,再确认保存并留下记录。找不到编号、数量超过可用数量或者重复提交时,请提醒我,不要改表。具体规则看工作簿里的业务说明。先让我看看界面,确认后再把按钮功能做好。
第一次提示保持简短,详细的数量上限、日期范围、允许的方式和样例结果放进业务说明。实际操作若不符合预期,再补一句“现在是什么结果、应该是什么结果、请用哪条数据再检查”。这样比先写一长串专业实现要求更容易上手。
首次接触工具时,可以先照着本案例完成 1 条测试数据:写下操作前数值,再预估操作后数值,最后比对真实工作表。先用副本练习,验收通过后再考虑用于正式数据。
WorkBuddy 与 VBAYYDS语音编程把自然语言连接到窗体和可编辑代码。你不必先掌握控件绘制和整套 VBA 语法,就能开始做自己的工具;业务规则是否准确、数据是否允许修改、结果是否可靠,仍需要自己把关。

