用 WorkBuddy 制作工单进度更新与异常登记窗体

3 次浏览

用 WorkBuddy 制作工单进度更新与异常登记窗体

生产工单的进度更新,看似只是把“完成数量”加上去,但真正落地时还要同时处理剩余量、完成率、计划日期、风险状态、异常原因和历史明细。如果只让使用者直接改工作表,越界、漏填、重复登记和前后数据不一致几乎无法避免。

这次我用一个真实的 Excel/WPS VBA 案例,演示如何借助 WorkBuddy 和 VBAYYDS语音编程助手,把自然语言需求变成可运行、可校验、可回滚、可重开回读的工单进度窗体。案例中人员和工单均为虚构演示数据,但业务规则和验收方式按实际办公自动化场景设计。

原始工作簿里有什么

工作簿包含 3 张主要工作表:工单台账、业务参数 和 进度记录。工单台账保存工单编号、产品、车间、负责人、计划数量、累计完工数量、进度、计划完工日期、风险和状态;业务参数表保存演示基准日和枚举值;进度记录表用于追加每次更新的明细。

用 WorkBuddy 制作工单进度更新与异常登记窗体

原始工单台账与最终窗体

固定演示工单是 WO-006,产品为“泵体总成E”。更新前计划数量为 500,累计完成 360,完成率 72.0%,风险为“延期风险”,状态为“生产中”。本次使用 2026-09-05、完工 140 件、状态“已完成”和异常原因“换线延误”进行验收。

第一步:把 VBA 工程交给 WorkBuddy

先进入 VBE,点击 VBAYYDS 菜单,把当前工作簿的 VBA 工程复制到独立工作区。这一步让 WorkBuddy 能读到工作表类模块、标准模块、UserForm 和工程配置,后续生成的内容也可以再同步回工作簿。

用 WorkBuddy 制作工单进度更新与异常登记窗体

点击 VBAYYDS 菜单复制 VBA 工程

在 WorkBuddy 中选择刚刚生成的工作区,再让 AI 读取工作簿结构。这里没有一开始就要求生成所有代码,而是先做窗体设计,确认界面之后再补业务逻辑。

首轮提示词 请读取当前 VBA 工程、工单台账和业务参数表。请为“工单进度更新与异常登记”建立 UserForm YAML,先打开真实设计预览,暂不写业务逻辑。窗体需包含工单编号、更新日期、本次完成数量、更新状态和异常原因;同时展示产品、计划量、已完成量、剩余量、完成率、风险以及更新前后的状态和累计数。

用 WorkBuddy 制作工单进度更新与异常登记窗体

WorkBuddy 持续处理窗体与业务逻辑

先预览窗体,再生成代码

首轮输出的不是模糊图片,而是可检查控件名称、尺寸和布局的真实 UserForm 设计预览。窗体被分成“更新输入”和“状态/结果预览”两个区域,并把“预览更新”与“确认写回”分开。这个区分非常重要:预览时不改表,只有二次确认后才真正写回。

用 WorkBuddy 制作工单进度更新与异常登记窗体

第一轮生成的真实窗体设计预览

布局确认后,第二轮再补齐业务逻辑和测试。

实际提示词 请复用已确认的窗体,补齐工单加载、完成量上限、完成率计算、计划日期风险、异常原因必填、重复提交拦截、写回预览、二次确认、事务式回滚、进度记录编号和重开回读。用 WO-006 完成一次真实写回,再验证超量、缺少异常原因和重复提交三项拒写;失败就继续修正到全部通过。

自动生成的 VBA 代码做了什么

生成结果包含 frm工单进度更新 窗体、m工单进度更新 标准模块和 VBAYYDS 工程连接模块。加载工单时,代码直接从工单台账查找编号,再把当前值放入只读预览区,而不是使用窗体里的缓存数据。

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工单行 = r
    m计划数量 = CDbl(Sheet1.Cells(r, 5).Value)
    m累计前 = CDbl(Sheet1.Cells(r, 6).Value)
    Me.Tb剩余量.Text = CStr(m计划数量 - m累计前)
    Me.Tb完成率.Text = Format(Sheet1.Cells(r, 7).Value, "0.0%")
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

用 WorkBuddy 制作工单进度更新与异常登记窗体

本次完工数量超过剩余量时被拦截

风险计算也没有只看用户选了什么状态。已完成或完成率达到 100% 时,风险直接变为“已完成”;未完成且计划日期已过,判定为“延期风险”;距离计划日期不超过 3 天则是“临期”。

Private Function 计算风险(计划完工日 As Date, 基准日 As Date, _
    新状态 As String, 新完成率 As Double) As String
    If 新状态 = "已完成" Or 新完成率 >= 1 Then
        计算风险 = "已完成"
    ElseIf 计划完工日 < 基准日 Then
        计算风险 = "延期风险"
    ElseIf (计划完工日 - 基准日) <= 3 Then
        计算风险 = "临期"
    Else
        计算风险 = "正常"
    End If
End Function

为什么要先预览,再二次确认

点击“预览更新”时,窗体只计算新累计数、新完成率、新风险和新状态,并把前后值放进预览区,工作表此时不变。点击“确认写回”后,二次确认窗口再次列出累计、完成率、风险和状态的变化。

用 WorkBuddy 制作工单进度更新与异常登记窗体

WO-006 写回前的二次确认

真正写回时,代码先保存工单台账的原值,然后同步更新主台账并追加进度记录。任何一步报错,代码会恢复原累计、原完成率、原风险和原状态。

On Error GoTo 回滚
Sheet1.Cells(m工单行, 6).Value = 新累计
Sheet1.Cells(m工单行, 7).Value = 新完成率
Sheet1.Cells(m工单行, 9).Value = 新风险
Sheet1.Cells(m工单行, 10).Value = 新状态
Call 追加进度记录(工单编号, 产品, 更新日期, 本次, 新状态, _
                    原累计, 新累计, 原风险, 新风险, 异常原因)
Exit Sub

回滚:
Sheet1.Cells(m工单行, 6).Value = 原累计
Sheet1.Cells(m工单行, 7).Value = 原完成率
Sheet1.Cells(m工单行, 9).Value = 原风险
Sheet1.Cells(m工单行, 10).Value = 原状态

结果验收:不只看“写回成功”

最终验收使用的是工作表中的真实值,而不是只看成功对话框。

核对项 更新前 更新后
工单 WO-006 WO-006
累计完工数量 360 500
完成率 72.0% 100.0%
风险 延期风险 已完成
状态 生产中 已完成
新记录编号 无 PG20260905-001

用 WorkBuddy 制作工单进度更新与异常登记窗体

工单台账中 WO-006 已更新为 500 和 100%

PG20260905-001 记录了工单编号、产品、更新日期、本次完工数量、新状态、更新前后的累计数、更新前后的风险、异常原因和登记时间。这使工单台账负责“当前状态”,进度记录负责“变更历史”,两者职责清晰。

用 WorkBuddy 制作工单进度更新与异常登记窗体

进度记录表新增 PG20260905-001

除成功路径外,还完成了 3 个拒写测试:完工数量输入 200 时,明确提示超过剩余量 140;本该填写异常原因却留空时,提示“异常原因必填”;成功写回后再次提交同一工单、日期、数量和状态,提示“重复提交”,而且记录条数不变。

自动生成的代码是可读、可维护的

成片中特意保留了更长的 VBA 代码展示。代码不是黑箱:可以在 VBE 中直接看到工单查找、输入校验、风险计算、二次确认、主表回写、明细追加和失败回滚。标准模块还提供了窗体入口和全流程验收宏,方便以后继续修改。

用 WorkBuddy 制作工单进度更新与异常登记窗体

VBE 中自动生成的 VBA 业务代码

关闭并重新打开窗体后,WO-006 仍能从工作表读回最新的完工数量、完成率、风险和状态,证明结果已经真正保存到台账,而不是只留在窗体内存中。

用 WorkBuddy 制作工单进度更新与异常登记窗体

重新打开窗体后正确回读 WO-006

这套结构还可以复用到哪里

这个案例可以直接抽象成“主台账 + 业务参数 + 明细记录 + UserForm”四层结构。它不只适用于生产工单,还可以用于采购到货更新、质检结果登记、客户订单跟进、合同履约节点、应收款回收和项目任务进度。

复用时建议保留 6 个要点:主台账是当前状态的唯一数据源;窗体只负责输入、预览和确认;所有规则集中在标准模块或窗体代码中;先校验再写回;主表与明细表一起成功或一起回滚;必须用真实工作表值完成验收。

可复用提示词模板 请读取当前工作簿、业务参数和字段说明,为“【业务名称】”设计 VBA UserForm。第一轮只生成窗体 YAML 并打开真实设计预览,确认后再生成窗体;第二轮补齐数据加载、输入校验、前后值预览、二次确认、事务式写回、重复校验、明细留痕和重开回读。请使用【成功样例】和【异常样例】执行验收,失败就继续修正,直到主表前后值、明细记录条数和编号全部符合预期。

写在最后

AI 并不只是帮你更快地敲几行 VBA。它更大的价值,是把“业务规则—窗体布局—代码生成—异常处理—真实验收”连成一条可重复的工作流。WorkBuddy 负责理解项目和持续执行,VBAYYDS语音编程助手负责连接 VBE 工程;使用者则需要把规则、边界和验收值说清楚。

当一个需求能被描述成可验证的过程时,即使没有系统学过 VBA,也可以先做出可运行版本,再围绕真实代码继续学习、审查和优化。

用 WorkBuddy 制作工单进度更新与异常登记窗体插图11

工具名称:VBAYYDS语音编程助手
适合人群:常用Excel且希望自动化操作但不想深学VBA的职场人
体验方式:下载地址vbayyds.com
✨ 让Excel听懂你的需求,或许只需要一次尝试。
✨ 你的时间,值得用在更值得的事情上。
官网下载地址 vbayyds.com
淘宝搜索 vbayyds
购买方式 加微信EXCEL880B
用 WorkBuddy 制作工单进度更新与异常登记窗体插图12