
不会写 VBA,也可以做出能直接运行的 Excel 窗体。关键不是背语法,而是把业务需求说清楚,再让 VBAYYDS 语音编程助手与 WorkBuddy 完成工程读取、窗体绘制、代码生成和写回验证。
这篇文章用案例 0068 展示一次完整结果。我们只提出“为工单台账生成进度更新与异常登记窗体”,系统随后生成 UserForm 和 VBA 代码。成品能够读取工单、计算进度、校验输入、登记异常、回写台账并保留明细记录。
VBAYYDS 和 WorkBuddy 如何配合
两个工具承担不同工作,并通过同一份 VBA 工程衔接。
| 工具 | 主要作用 | 可以看到的结果 |
|---|---|---|
| VBAYYDS 语音编程助手 | 连接 VBA 编辑器与工作区,复制工程并同步生成内容 | UserForm 窗体、标准模块、窗体代码 |
| WorkBuddy | 读取工作簿字段和业务规则,根据自然语言持续生成与修正 | 窗体定义、VBA 代码、测试过程和修正结果 |
使用者需要做的事情很少:打开 VBA 编辑器,点击 VBAYYDS 菜单,然后用自然语言描述想要的功能。后面的界面和代码都能在真实工程中检查和继续修改。
先让系统理解工作簿
本案例的工作簿包含 工单台账、业务参数 和 进度记录 三张主要工作表。工单台账保存当前状态,业务参数保存日期与枚举值,进度记录负责保留每次变更。

工单台账和生成后的登记窗体
演示工单为 WO-006。更新前计划数量是 500,累计完成 360,完成率是 72.0%,风险为“延期风险”,状态为“生产中”。这组数据既能验证正常写回,也能检查数量越界、异常原因缺失和重复提交。
从 VBA 编辑器进入 VBAYYDS
在 VBA 编辑器中点击 VBAYYDS 菜单,将当前工程复制到 WorkBuddy 工作区。工作表类模块、标准模块、UserForm 和工程配置会一起进入工作区,WorkBuddy 因此能够基于现有文件继续工作。

在 VBA 编辑器中点击 VBAYYDS 菜单
进入 WorkBuddy 后,我说出的需求是:请读取当前工作簿,为工单台账生成一个进度更新与异常登记窗体。窗体要能加载工单、预览更新、校验完成数量、登记异常原因、二次确认,并把结果同步写入工单台账和进度记录。
一句需求已经包含业务目标和验收条件,不需要先写控件清单,也不需要手工搭建空白窗体。

WorkBuddy 读取工程并生成窗体定义
窗体和代码自动生成
WorkBuddy 先读取工作簿字段,再生成窗体定义。VBAYYDS 根据定义绘制真实 UserForm,控件名称、尺寸和布局都可以检查。确认界面后,系统继续补齐加载、预览、确认写回和异常处理代码。

自动生成的 UserForm 设计预览
最终窗体包含工单编号、更新日期、本次完成数量、更新状态和异常原因。只读区域同时显示产品、计划数量、已完成数量、剩余数量、完成率、风险以及更新前后的状态和累计数。
这不是一张效果图。生成结果已经写入 VBA 工程,可以在编辑器里看到模块和事件过程,也可以直接运行。

在 VBA 编辑器中查看自动生成的代码
生成代码覆盖真实业务规则
系统生成的代码会从工单台账查找编号,并把最新数据装入窗体。关闭后再打开,窗体仍从工作表读取,不依赖上一次运行留下的内存值。
Public Sub 加载工单()
Dim 编号 As String, r As Long
编号 = Trim(Me.Tb工单编号.Text)
r = 查找工单行(编号)
If r = 0 Then
Me.Tb状态前.Text = "未找到工单:" & 编号
Exit Sub
End If
m计划数量 = CDbl(Sheet1.Cells(r, 5).Value)
m累计前 = CDbl(Sheet1.Cells(r, 6).Value)
Me.Tb剩余量.Text = CStr(m计划数量 - m累计前)
End Sub
写回之前,代码会检查重复记录、剩余数量和异常原因。成功写回后再次提交相同的工单、日期、数量和状态,会明确提示“重复提交”,并保持记录条数不变。
If 已存在记录(Me.Tb工单编号.Text, 更新日期, 本次, 新状态) Then
Me.Tb状态前.Text = "重复提交"
Exit Function
End If
If 本次 > (m计划数量 - m累计前) Then
Me.Tb状态前.Text = "超过剩余量 " & (m计划数量 - m累计前)
Exit Function
End If
If 需异常 And Trim(Me.Tb异常原因.Text) = "" Then
Me.Tb状态前.Text = "异常原因必填"
Exit Function
End If

完成数量超过剩余量时自动拦截
这段代码说明生成结果并非只有按钮事件。它已经包含数据读取、数量校验、异常拦截、完成率计算、风险判断、二次确认、台账写回、明细追加和失败回滚。
写回前先看清变化
点击“预览更新”时,窗体只计算新累计数、完成率、风险和状态,工作表暂时不变。点击“确认写回”后,系统再次列出更新前后的关键值。

写回前显示累计完成率风险和状态变化
这次更新把 WO-006 的本次完成数量设为 140,新状态设为“已完成”,异常原因填入“换线延误”。确认后,主台账和进度记录同步更新。
| 核对项 | 更新前 | 更新后 |
|---|---|---|
| 累计完工数量 | 360 | 500 |
| 完成率 | 72.0% | 100.0% |
| 风险 | 延期风险 | 已完成 |
| 状态 | 生产中 | 已完成 |
| 进度记录编号 | 无 | PG20260905-001 |

工单台账中的 WO-006 已更新
进度记录 表新增 PG20260905-001。记录中包含工单编号、产品、更新日期、本次完成数量、更新前后累计数、更新前后风险、异常原因和登记时间。主台账负责当前值,明细表负责追溯每次变化。

进度记录表新增一条可追溯明细
关闭并重新打开窗体后,WO-006 仍然显示累计完成 500、完成率 100.0% 和状态“已完成”。这证明数据已经真实写回工作簿。

重新打开窗体后读取到最新数据
自动生成带来的实际变化
传统做法需要手动画控件、逐个命名、编写事件代码,再反复定位错误。VBAYYDS 与 WorkBuddy 把这些步骤合并到同一次对话中,使用者可以把注意力放在字段、规则和验收结果上。
- 不需要从空白 UserForm 开始摆放控件
- 不需要逐行编写数据查找和写回代码
- 可以直接查看并继续维护生成的 VBA 源码
- 可以用真实工作表数据验证成功路径和异常路径
这套方式尤其适合已经在 Excel 中维护台账,却因为不会写 VBA 而长期依赖手工录入的人。它也适合懂业务但编程时间有限的管理人员和办公自动化人员。
可以继续复用的业务场景
案例 0068 使用的是工单进度,但同一套方法可以迁移到设备保养、质检登记、采购到货、客户跟进、合同节点、应收回款和项目任务。只要工作簿中有明确字段,业务规则能够说清楚,就可以让系统生成对应的窗体和代码。
开始时只需完成四步。
- 打开需要改造的 Excel 或 WPS 工作簿
- 进入 VBA 编辑器并点击 VBAYYDS 菜单
- 在 WorkBuddy 中说出窗体用途和业务规则
- 检查生成的窗体代码和真实写回结果
用说话的方式完成 VBA 开发
案例 0068 已经给出一个可运行结果。自然语言需求经过 VBAYYDS 和 WorkBuddy 后,变成了真实 UserForm、完整 VBA 代码以及可追溯的台账更新。
如果你有一份正在使用的 Excel 台账,可以从最熟悉的业务开始,把“我要录入什么、需要检查什么、最后写到哪里”说出来。VBAYYDS 加 WorkBuddy 会把这段话继续变成可以运行和修改的 VBA 工程。

