
在 Excel 里做一张商品入库单,能不能直接说需求,让 AI 画好窗体、写好代码,再自己点按钮测试?这个案例用 WorkBuddy 配合 VBAYYDS,把商品搜索、信息回填和多商品入库串了起来。
不必先记住控件名称。你可以用语音输入告诉 WorkBuddy:“供应商从表里选,商品弹窗搜索,选好后带回名称和规格。”本次演示使用自然语言提示词;语音只是输入需求的一种方式,并不改变后面的业务验证。
最终示例将 10 包打印纸和 2 盒中性笔写入同一张入库单,形成两条明细,合计 316 元。本文保留真实提示词、关键代码和测试结果,方便照着复现。全部商品与供应商均为虚构教学数据。
先让表格提供选项和商品资料

图1 商品档案提供商品ID 名称 规格 单位和参考进价
商品名称、ID 和规格必须来自同一条档案。若让使用者分别手输,名称选对、ID 填错也可能保存成功。因此,本案例用搜索结果整行回填商品信息,数量和单价再由使用者输入。
| 工作表 | 本案例中的用途 |
|---|---|
| 商品档案 | 保存 12 种商品及参考进价,为搜索窗体提供数据 |
| 基础选项 | 保存 3 个供应商和 3 个仓库,供主窗体下拉选择 |
| 入库明细 | 按每件商品一行,追加单号、日期及商品数量金额 |
| 业务规则 | 描述输入和保存约束,供实现与验收对照 |
源表第 4 行是字段行,数据从第 5 行开始。当前代码按固定列读取,没有自动识别任意表头的能力。基础选项遇到第一个空白就结束读取,因此不要在有效选项中间留空行。
业务规则表用于说明要求,实际校验写在 VBA 事件中;修改规则表不会自动改变程序行为。首次复现应先保留现有表名和列顺序,用测试副本验证后再调整。
用自然语言说清楚想做什么

图2 WorkBuddy 中实际输入的首轮需求
实际提示词
请使用vba相关技能 使用vba窗体完成以下任务。窗体采用紧凑布局,控制窗体高度,所有输入框、列表和底部按钮要在一屏内完整显示,文字保持清楚。帮我做一个商品入库单:供应商和仓库从表里下拉选。选商品时弹出搜索窗口,输入关键词,选中后带回商品名称、ID和规格。填数量和单价,能连续加几种商品,最后保存到表里。使用明亮浅色的清爽蓝白(office-clean)主题。先给我看入库单窗体预览,确认后再看商品搜索窗体。
“使用 vba 相关技能”明确工具方向,避免只得到一段建议。“商品入库单”说明目标;“从表里下拉选”给出数据来源,不用先讲控件或变量。
“带回名称、ID 和规格”要求选中整条商品,避免只回填名称。“紧凑布局、一屏完整显示”约束窗体高度,不能靠缩小文字掩盖按钮被挤出屏幕的问题。“先给我看预览”把外观检查放在业务逻辑之前。
首轮提示没有枚举每一列和全部边界值。当前工作簿与业务规则提供上下文,后续再要求搜索、加入清单、保存和重开测试。简短不等于省略验收;缺少测试要求,很容易只确认“窗体看起来做出来了”。
让 AI 生成窗体并实际操作测试

图3 WorkBuddy 的完成摘要用于定位产物 功能结论仍需核对实际运行
WorkBuddy 负责组织需求、生成代码和修改问题;VBAYYDS 提供 VBA 窗体生成及 UITest 操作能力。语音或自然语言描述可以自动生成窗体;生成后的窗体可在 VBA 中手动编辑和微调。

图4 紧凑入库窗体中已加入两种商品 合计金额为316元
UITest 可以按控件完成输入、选择和按钮点击,让 AI 不只写代码,还能验证搜索与保存。本次商品搜索、选择回填、数量输入、加入清单和保存都使用了这类测试;供应商与仓库下拉选择有人工鼠标辅助。
看懂搜索和保存的关键代码
调试中发现搜索窗体再次获得焦点时会清空状态。问题定位后,WorkBuddy 将重置动作改成打开搜索前才执行,再复测回填与保存。这里不能把“执行自动测试”理解成所有问题都由 AI 独立发现并解决。

图5 最终VBA代码中可见逐行写回和清空清单逻辑
搜索覆盖 ID、名称和规格,先统一大小写并清除关键词首尾空格,再做包含匹配。下面为最终代码原样节选:
kw = LCase$(Trim$(CStr(TbKeyword.Value)))
hay = LCase$(m_Data(r, 0) & "|" & m_Data(r, 1) & "|" & m_Data(r, 2))
If kw = "" Or InStr(1, hay, kw) > 0 Then
主窗体在显示搜索窗体前调用“准备搜索”,只有确认选中商品才回填。取消搜索不覆盖主窗体已有商品。原样节选如下:
Call frm商品搜索.准备搜索
frm商品搜索.Show
If gSelChosen Then
TbName.Value = gSelName
TbId.Value = gSelId
TbSpec.Value = gSelSpec
加入清单时,数量必须是大于零且不超过 999999 的整数,单价必须是非负数字。保存前检查供应商、仓库、日期和清单;通过后逐行追加到“入库明细”,保存工作簿,再清空待提交清单。立即再点保存会被空清单校验拦住。
用明细记录核对测试结果

图6 入库明细保留同一单号下的两行记录 数量和金额与窗体一致
示例单号为 RK20260908001,日期为 2026-09-08,供应商为晨光办公供货商,仓库为主仓库。P002 打印纸为 10 × 28=280 元;P004 中性笔为 2 × 18=36 元。A5:K6 保存两条明细,合计 316 元,下面的检查区域 A7:K12 为空。
| 实际检查 | 观察到的结果 |
|---|---|
| 按名称 规格 ID 搜索 | 打印纸、80g、P002/P004 可定位对应商品 |
| 无匹配词和未选中就确认 | 显示无匹配结果或要求先选择一行 |
| 清空搜索与取消选择 | 清空后显示 12 种商品;取消不替换主窗体已有商品 |
| 数量为0或单价为负数 | 阻止加入清单,显示对应提示 |
| 连续加入并保存两种商品 | 写入两行,合计 316 元,清单清空 |
| 保存后立即再次保存 | 提示清单为空,没有新增重复行 |
| 关闭再打开窗体 | 已保存两行仍在;本项不是关闭重开整个工作簿测试 |
测试时既要看提示,也要看表里有没有多写、少写或错写。单次运行正确不代表所有边界已覆盖;小数数量、超大数值、删除行、异常保存等仍应按实际使用要求继续补测。
换成自己的业务时怎么提需求
可复用提示模板
请使用vba相关技能 使用vba窗体完成以下任务。帮我根据当前工作簿做一个【业务单据】。先读取已有数据和规则,选项从【选项表】里选。选择【对象】时弹出搜索窗口,按【名称、编号或规格】找,选中后带回对应信息。填写【数量等字段】,可以连续加入多条,最后保存到【结果表】。窗体布局紧凑,字要清楚,所有按钮一屏显示。先给我看预览。功能完成后,用VBAYYDS的uitest能力测试正常输入、错误输入、取消、重复保存和重开,并核对结果表有没有写错。
把方括号换成自己的业务名称即可。比如领料单可以搜索物料,报销单可以搜索费用项目。先说明使用者要做什么、数据从哪里来、什么情况下不能保存,再让 AI 根据工作簿落实细节。
发现偏差时,用“看到的错误+正确目标+如何验收”继续说。例如:“取消搜索后,主窗体原来的商品不能变。请修改,再选另一种商品后点取消,检查原来的商品还在。”这种描述无需知道事件名称,也能明确修复目标。
当前版本适合单人教学演示。单号按已有明细行数生成,两条明细保存后下一编号会跳到 003,并非严格按单据数量连续编号。删除历史行或多人同时写入时,不能据此保证编号唯一。
保存过程没有事务回滚;清空清单只拦截紧接着的重复保存,不是跨会话防重复机制。正式使用前,还应补齐金额精度、写入失败恢复、编号策略和备份规则,再用自己的数据副本验收。
这个案例最值得复用的做法,是让 AI 把“画窗体、写代码、点控件测试”连起来。零基础也能从说清需求开始,但商品资料、业务规则和最终结果,仍要由使用者确认。

