用 WorkBuddy 制作设备保养到期预警与登记窗体

3 次浏览

用 WorkBuddy 制作设备保养到期预警与登记窗体

设备保养台账最麻烦的地方,往往不是“记一条保养记录”,而是如何把到期判断、登记校验、台账更新和历史留痕连成一个可靠的闭环。只用公式可以做预警,但一旦需要多人登记、二次确认、禁止重复提交,表格就很容易出现漏填、错填或只改了一半的数据。

这次我用一个真实的 Excel/WPS VBA 案例,演示如何借助 WorkBuddy 和 VBAYYDS语音编程助手,把自然语言需求转成可运行、可检查、可继续维护的 UserForm。案例中的设备和人员数据均为虚构演示数据,但业务规则、写回方式和测试过程都按实际办公场景设计。

先把业务问题说清楚

原始工作簿有 3 张可见工作表:设备台账、业务参数 和 保养记录。设备台账从第 5 行开始存放 18 台设备;业务参数表保存 6 类设备的日期周期、运行小时周期和预警阈值;保养记录在开始时只有表头,没有预置结果。

用 WorkBuddy 制作设备保养到期预警与登记窗体

原始设备保养台账

这个案例不只是做一个好看的输入框,而是要同时解决 5 个问题:

  1. 输入设备编号后,自动读取设备名称、类别、车间、负责人、运行小时和上下次保养信息。
  2. 同时使用“日期”和“运行小时”判断设备是逾期、临近还是正常。
  3. 在真正写回前,先把登记前后变化完整预览出来。
  4. 新增保养记录与更新设备台账必须一起成功;任一步失败,都要回滚。
  5. 保存后关闭窗体再重新打开,仍能从工作表读回刚才的结果。

固定演示设备是 EQ-003。登记前,它的状态为“逾期”,上次保养日期是 2026-06-20,下次到期小时是 5150。本次登记使用 2026-09-05、例行保养、执行人 王海、结果 合格,预期生成记录编号 BY20260905-001。

第一步:让 AI 先设计窗体,不急着写业务逻辑

复杂窗体最容易犯的错误,是把界面和业务逻辑一次性全交给 AI。这样看起来省事,但控件命名、布局和数据流一旦不合适,后面修改会牵一发动全身。

更稳妥的做法是拆成两轮。第一轮只建立窗体 YAML,先看真实设计预览;第二轮在确认界面后,再补齐业务逻辑和回归测试。

首轮提示词 请读取 VBA 技能、VBA 窗体技能、当前工作簿及“业务参数”表。请为“设备保养登记”先建立窗体 YAML 并打开真实设计预览,暂不写业务逻辑,预览后等我确认生成。窗体输入控制在 5 项:设备编号、保养日期、保养类型、执行人、保养结果;要能展示设备当前状态和写回预览。使用“竹林绿(forest-bamboo)”主题与明亮浅色外观,严格按规则表处理对齐、等宽、间距和完整显示,禁止大面积深色或刺眼纯白。

用 WorkBuddy 制作设备保养到期预警与登记窗体

在 WorkBuddy 中发送首轮窗体设计提示词

这段提示词有三个关键点。第一,明确要求 AI 读取当前工作簿,而不是凭空猜测字段;第二,把输入项限制在 5 个,避免把窗体做成拥挤的“第二张工作表”;第三,要求先预览后生成,让布局问题在写代码前暴露出来。

设计预览确认后,再发送第二轮需求:

实际提示词 现在复用“业务参数”表规则和已生成窗体,补齐设备加载、到期判断、结果预览、二次确认、事务式写回与重开回读逻辑。编译并运行真实窗体,用 EQ-003 和规则表中的异常样例回归;失败就继续修正到全部通过。

第二轮没有逐行规定 VBA 应该怎么写,而是规定了“必须完成什么”和“怎样才算通过”。WorkBuddy 随后补齐 m设备保养登记 模块、窗体事件转发和入口按钮,并执行回归测试。最终结果显示 10/10 全部通过,同时真实打开窗体等待人工核验。

用 WorkBuddy 制作设备保养到期预警与登记窗体

WorkBuddy 完成逻辑、回归和真实窗体部署

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

这次生成的核心模块不是一小段演示宏,而是一套完整的业务逻辑。初始化时,它从“业务参数”表读取演示基准日期和各设备类别参数,再给两个下拉框填充允许值。

Public Sub 初始化窗体(f As frm设备保养登记)
    Dim ws As Worksheet
    Dim r As Long
    Set ws = ThisWorkbook.Worksheets("业务参数")
    m基准日期 = CDbl(ws.Range("B14").Value)
    Set m类别参数 = CreateObject("Scripting.Dictionary")
    For r = 5 To 10
        m类别参数(CStr(ws.Cells(r, 1).Value)) = _
            Array(CDbl(ws.Cells(r, 2).Value), CDbl(ws.Cells(r, 3).Value), _
                  CDbl(ws.Cells(r, 4).Value), CDbl(ws.Cells(r, 5).Value))
    Next r
    f.Cmb保养类型.List = Array("例行保养", "专项保养", "故障检修")
    f.Cmb保养结果.List = Array("合格", "需观察", "停机检修")
End Sub

到期判断同时看两个维度:只要下次到期日期早于基准日期,或者下次到期小时小于等于累计运行小时,就判定为逾期;没有逾期,但剩余天数或小时进入预警阈值,则判定为临近。

Private Function 计算到期状态(下次日期 As Double, 下次小时 As Double, _
    累计小时 As Double, 基准 As Double, 预警天 As Double, 预警时 As Double) As String
    Dim 剩余天 As Double, 剩余时 As Double
    剩余天 = 下次日期 - 基准
    剩余时 = 下次小时 - 累计小时
    If 下次日期 < 基准 Or 下次小时 <= 累计小时 Then
        计算到期状态 = "逾期"
    ElseIf 剩余天 <= 预警天 Or 剩余时 <= 预警时 Then
        计算到期状态 = "临近"
    Else
        计算到期状态 = "正常"
    End If
End Function

用 WorkBuddy 制作设备保养到期预警与登记窗体

VBE 中由 AI 生成的 m设备保养登记 模块

真正值得关注的是写回部分。代码先保存设备台账原值,再向“保养记录”新增一行,并同步更新设备台账。如果中途报错,会删除刚插入的记录行,并把设备台账恢复到原状态。这比“先写一张表,再写另一张表”可靠得多。

On Error GoTo errh
' 新增保养记录并更新设备台账
wsRec.Cells(新行, 1).Value = 记录编号
wsRec.Cells(新行, 2).Value = m设备编号
ws.Cells(m设备行, 7).Value = 日期
ws.Cells(m设备行, 9).Value = 新下次日期
ws.Cells(m设备行, 10).Value = 新下次小时
ws.Cells(m设备行, 11).Value = 新状态
Exit Sub

errh:
If CStr(wsRec.Cells(新行, 1).Value) = 记录编号 Then
    wsRec.Rows(新行).Delete
End If
ws.Cells(m设备行, 11).Value = 旧状态
ws.Cells(m设备行, 7).Value = 旧上次日期
ws.Cells(m设备行, 8).Value = 旧上次小时
ws.Cells(m设备行, 9).Value = 旧下次日期
ws.Cells(m设备行, 10).Value = 旧下次小时

此外,代码还会按 BYyyyymmdd-### 生成记录编号,并检查“设备编号 + 保养日期 + 保养类型”是否已经存在。重复提交不会写入第二条记录。

从加载、预览到确认写回

真实运行时,用户只需要输入设备编号并点击“加载设备”。窗体会从设备台账读取当前信息,而不是把旧值保存在窗体内部。这样即使工作簿中的数据被其他流程更新,重新打开窗体仍能拿到最新结果。

登记前,用户输入保养日期、保养类型、执行人和保养结果,再点击“预览登记”。预览区会同时显示登记前状态、登记后状态、上下次保养日期和小时,以及即将生成的记录编号。此时工作表不发生任何变化。

只有点击“确认写回”并通过二次确认,系统才执行事务式更新。这样的交互比直接点一下就改表更适合保养、质检、回款等需要留痕的业务。

用 WorkBuddy 制作设备保养到期预警与登记窗体

关闭后重开窗体仍能读回 EQ-003 的最新状态

结果核对:不能只看“写回成功”提示框

按钮弹出“成功”并不代表数据一定正确。这个案例把验收落在工作表中的真实值上:

核对项 登记前 登记后
保养状态 逾期 正常
上次保养日期 2026-06-20 2026-09-05
下次到期小时 5150 5520
保养记录条数 0 1
新记录编号 无 BY20260905-001

用 WorkBuddy 制作设备保养到期预警与登记窗体

保养记录新增 BY20260905-001

新增记录完整保存了设备编号 EQ-003、设备名称“空压机2号”、保养日期、保养类型、执行人、保养结果、登记时间,以及登记前后的状态。关闭并重新打开窗体后,EQ-003 仍显示最新的正常状态、上次保养日期 2026-09-05 和下次到期小时 5520,证明结果不是只存在于窗体内存中。

10 个回归用例覆盖了哪些风险

WorkBuddy 生成的回归过程不仅测试成功路径,还覆盖了常见异常:EQ-003 加载后识别逾期;合格结果预览为正常;事务式写回成功;重开后可以回读;日期早于上次保养被拦截;日期晚于演示基准被拦截;相同设备、日期和类型的重复登记被拦截;EQ-006 识别为逾期;EQ-001 识别为临近;“停机检修”正确映射为“停机”。

这些测试说明了一个很实用的原则:让 AI 写代码时,不要只说“帮我做个窗体”,还要给出成功数据、异常数据和可核对的前后值。需求越可验收,AI 越不容易在“看起来能运行”时提前结束。

这个做法还能复用到哪些场景

设备保养只是一个代表。凡是同时存在“主台账 + 参数规则 + 明细记录”的 Excel 业务,都可以复用这套结构,例如客户回访登记、应收账款催收、质量检验、库存领料、合同到期提醒和员工培训记录。

复用时建议保留四层结构:第一层是工作表作为唯一数据源;第二层是 UserForm 负责输入、展示和确认;第三层是标准模块负责判断、校验、编号和事务式写回;第四层是回归测试负责验证成功与异常路径。这样以后换字段、换规则或换业务名称,也不必推翻整个工程。

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

写在最后

AI 编程真正节省的,不只是敲代码的时间,而是把“业务规则—界面—代码—测试—验收”串成一条可重复的工作流。WorkBuddy 负责理解项目和持续执行,VBAYYDS语音编程助手负责连接 VBE 工程;使用者仍然需要把规则、边界和验收值讲清楚。

当你能用自然语言描述一套可验证的流程时,即使没有系统学过 VBA,也可以先做出能运行的版本,再围绕真实代码继续学习和微调。这比从空白模块里逐行摸索,更接近实际办公自动化的工作方式。

用 WorkBuddy 制作设备保养到期预警与登记窗体插图7

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