
AI 改变生活。以前想在 Excel 里做一套能查询订单、校验到货数量、登记到货记录并自动更新订单状态的 VBA 窗体,往往要先学控件、事件、工作表读写和异常处理。现在,把业务要求说清楚,WorkBuddy 就能协同 VBAYYDS 自动生成窗体与 VBA 代码。
这篇文章用 VBA-0069 案例说明完整过程。最终成果不是静态示意图,而是一套能够真实运行、真实写回数据的采购到货登记工具。
这个案例解决什么问题
采购订单到货时,工作人员通常要同时完成几件事:查找订单、确认剩余数量、登记本次到货、判断检验结果、追加到货流水,再把采购订单的累计到货数量和状态改掉。手工操作不但步骤多,也容易出现超量登记、重复提交或状态漏改。
本案例把这些动作集中到一个窗体中。用户只需选择采购单号,填写到货日期、数量、检验结果和入库仓库,系统就会自动完成后续校验与联动。
| 手工处理的难点 | 窗体自动完成的动作 |
|---|---|
| 来回查找采购订单 | 按采购单号自动加载供应商、物料、订单量和要求到货日 |
| 容易填入超过剩余数量的到货量 | 预览前自动比较本次到货数量与未到数量 |
| 到货流水和订单台账需要分别维护 | 一次确认,同时追加“到货记录”并更新“采购订单” |
| 到货状态依靠人工判断 | 根据累计到货数量自动得到“部分到货”或“已完成” |
| 重复点击可能产生重复记录 | 写入前检查重复业务记录并阻止二次提交 |
WorkBuddy 与 VBAYYDS 如何配合
WorkBuddy 负责理解自然语言需求、拆解业务步骤、组织生成任务并检查结果;VBAYYDS 负责连接 Excel 与 VBA 工程,把窗体、控件、事件和代码真正落到工作簿中。两者配合后,用户关注的是“业务要怎么做”,而不是先背下每一个 VBA 语法细节。
| 工具 | 在流程中的作用 |
|---|---|
| WorkBuddy | 读取工作簿结构和业务规则,把口述需求整理成可执行的窗体与代码任务 |
| VBAYYDS | 将生成结果写入 VBA 工程,并让窗体、按钮事件和工作表读写逻辑真正运行 |

在 VBA 编辑器中进入 VBAYYDS 语音编程助手
从 VBA 编辑器点击 VBAYYDS 菜单后,就可以把任务交给 WorkBuddy。这里不需要手工在窗体上逐个摆放控件,也不需要自己从空白模块开始写代码。
先把业务目标说清楚
生成质量的关键,不是把需求说得复杂,而是把输入、动作、规则和结果说完整。本案例的核心要求可以压缩成下面这段话:
首轮提示词:读取当前工作簿和“业务参数”,生成一个采购到货登记 UserForm。窗体包含采购单号、到货日期、到货数量、检验结果、入库仓库五个输入项,以及加载订单、预览到货、确认写回、清空四个按钮。下方显示写回前后的已到数量、未到数量和订单状态,并使用暖金色主题。
首轮任务先完成界面和字段映射,让用户能够确认窗体结构是否符合实际业务。确认后,再补充第二轮逻辑:加载订单、校验输入、预览变化、二次确认、生成到货记录编号、事务式写回、重新读取结果,并测试超量到货、不合格检验和重复提交。
这种分两轮的方式很实用:第一轮确认“长什么样”,第二轮确认“怎么运行”。即使完全不会 VBA,也能用业务语言参与整个开发过程。
自动生成窗体和 VBA 代码

VBAYYDS 同步生成采购到货窗体与 VBA 代码
生成完成后,可以同时看到窗体和代码。窗体不是一张图片,而是带有真实控件名称、按钮事件和数据字段的 UserForm;代码也不是演示片段,而是直接写入工程、可继续编辑和维护的 VBA 模块。
窗体按照业务顺序分成三个区域:顶部录入本次到货信息,中部只读显示订单上下文,底部预览写回前后的数量和状态。用户先加载订单,再预览变化,最后确认写回,操作路径非常清楚。
生成代码里的关键规则
下面是这类到货登记逻辑的核心写法。它先阻止无效或超量的到货数量,再根据检验结果决定是否计入已到数量。
If 到货数量 <= 0 Or 到货数量 > 未到数量 Then
MsgBox "本次到货数量必须大于 0,且不能超过未到数量。"
Exit Sub
End If
If 检验结果 = "合格" Then
新已到数量 = 原已到数量 + 到货数量
Else
新已到数量 = 原已到数量
End If
随后,程序计算新的未到数量和订单状态,并把结果同时写入两张表。
新未到数量 = 订单数量 - 新已到数量
If 新未到数量 = 0 Then
新状态 = "已完成"
Else
新状态 = "部分到货"
End If
'追加到货记录,并更新采购订单
到货记录.Cells(新行号, 1).Value = 到货记录编号
采购订单.Cells(订单行号, 已到数量列).Value = 新已到数量
采购订单.Cells(订单行号, 状态列).Value = 新状态
真正有价值的不是某一行代码,而是 WorkBuddy 能把“超量不能提交、不合格不计入到货、两张表同步更新”这些自然语言规则,转成一套完整、连贯的程序逻辑。
运行结果:一笔登记,两张表自动联动
本次演示选择采购单 PO-1007,到货日期为 2026-09-05,本次到货数量为 300,检验结果选择“合格”,入库仓库选择“原料仓”。

真实窗体运行与订单状态联动结果
点击“加载订单”后,窗体自动带出供应商、物料、订单数量、采购员和要求到货日。点击“预览到货”,用户可以先看到数据将如何变化;只有再次点击“确认写回”后,系统才正式修改工作簿。
| 项目 | 写回前 | 写回后 |
|---|---|---|
| 已到数量 | 500 | 800 |
| 未到数量 | 300 | 0 |
| 订单状态 | 部分到货 | 已完成 |
| 到货记录条数 | 0 | 1 |
系统同时生成到货记录编号 ARR20260905-001。这样既保留了每一次到货的明细流水,也让采购订单主表保持最新状态。
不是“能运行”就结束,还要通过异常测试
一套业务窗体能否真正使用,关键看异常情况能不能挡住。本案例重点验证了四类场景:
- 输入不存在的采购单号时,提示用户并停止后续动作。
- 本次到货数量超过未到数量时,不允许预览和写回。
- 检验结果为“不合格”时,可以保留到货记录,但不增加订单的已到数量。
- 相同采购单、日期和到货内容再次提交时,系统识别重复记录并阻止写入。
确认写回采用完整事务思路:先检查全部条件,再追加到货记录、更新采购订单,最后重新读取结果。若中途出现错误,程序会进入错误处理,避免一张表已经更新而另一张表没有同步。

真实生成的 VBA 事务式写回代码
这也说明,WorkBuddy 与 VBAYYDS 的价值不只是“快速画一个窗体”,而是把字段映射、按钮事件、业务校验、编号生成、跨表写回和异常恢复一起完成。
四步开始用嘴做 VBA
- 第一步: 打开需要自动化的 Excel 工作簿,并明确数据表和业务参数。
- 第二步: 进入 VBA 编辑器,点击 VBAYYDS 菜单,把任务交给 WorkBuddy。
- 第三步: 用一句完整的话说明输入项、按钮、校验规则和写回结果。
- 第四步: 查看自动生成的窗体与代码,确认后运行测试,再按实际业务继续调整。
不会写 VBA,并不等于不能做 Excel 自动化。只要你能讲清楚业务,WorkBuddy 就能协同 VBAYYDS 把语言变成窗体、把规则变成代码、把结果写回表格。
会说话,就能做 VBA 自动化。

