
在 Excel 工作簿里做一个计算器,难点不只是摆好数字按钮,还要说明连续运算、小数、百分比和出错后的行为。本案例用自然语言描述需求,由 WorkBuddy 完成 VBA 窗体和计算代码,再通过 VBAYYDS 的 uitest 能力点击真实控件、读取结果。
最终窗体采用蓝黑金属配色,按键为紧凑的四列五行布局。它是按顺序计算的入门示范,不是带括号和运算优先级的科学计算器。演示运行于 WPS 表格的 VBA 环境,工作簿保存为 xlsm。

图 1 真实窗体显示 125 加 375 的结果 500,蓝色运算键与数字键分区明确。
先把计算规则写清楚
工作簿只有一张“使用说明”表,保存计算约定和测试示例。它不保存账号、计算历史或交易记录,计算过程也不向单元格写回数据。表格里的规则帮助 AI 理解需求,但并不是可以随时修改并自动加载的规则引擎;改变计算规则后仍需修改代码并复测。

图 2 原始工作表给出操作规则、预期结果和说明,作为生成与验收的共同依据。
| 操作约定 | 本案例行为 |
|---|---|
| 连续计算 | 按按键顺序结算,2 + 3 × 4 得到 20 |
| 百分比 | 当前输入除以 100,25% 得到 0.25 |
| 再按运算符 | 没有输入第二个数字时,替换待执行运算符 |
| 缺少第二个数字 | 输入 5 + = 后显示 5,不自动重复相加 |
| 小数点 | 已有小数点时忽略第二次输入 |
| 清空与重开 | C 重置状态;关闭窗体后重新打开显示 0 |
这些约定没有唯一通用答案。例如,手机计算器可能对百分比和重复按等号采用不同规则。先约定再测试,才能判断 AI 给出的结果是否符合需求。
用自然语言描述窗体需求
在 VBA 编辑器的 VBAYYDS 菜单中复制项目路径,然后在 WorkBuddy 新建任务,加入对应项目文件夹。这样 AI 能读取当前工作簿导出的项目和技能上下文。需求可以通过语音输入;下面保留本案例实际输入的首轮提示词。

图 3 提示词说明功能、配色、紧凑布局,以及先看预览再写逻辑的顺序。
实际提示词
请使用vba相关技能 使用vba窗体完成以下任务:帮我做一个Excel计算器,加减乘除、小数、百分比都能算,也能清空、退格和切换正负。用铸铁蓝 dark-iron 主题,做成蓝黑金属配色,要有科技感,大数字显示,按钮整齐,布局紧凑,窗体不要太高。先看表里的说明,只画窗体并打开真实预览,等我确认后再写计算代码。
“使用vba相关技能”让 AI 按当前工具的能力推进;“帮我做一个Excel计算器”限定了目标。“先看表里的说明”把详细计算规则交给工作表,避免提示词变成很长的技术规格。“布局紧凑,窗体不要太高”控制可用性;“先画窗体”则把外观确认与逻辑验收分开。缺少这些限制,AI 可能做出过高的窗口,或采用与你预期不同的计算方式。
语音或自然语言描述可以自动生成窗体;生成后的窗体可在 VBA 中手动编辑和微调。遇到偏差时,继续说明看见的错误、正确结果和复测例子即可,不必在第一句话里写完整算法。
用少量状态管理计算过程
窗体 frm计算器 接收按钮点击,维护输入和运算状态;标准模块 m计算器 提供显示、关闭及保存工作簿入口。显示入口持有非模态窗体实例,让窗体和工作表可以同时使用。计算状态不写入工作表,因此重新打开窗体不会恢复上一次算式。

图 4 最终代码将输入显示与错误显示分开,正常数字和错误信息使用不同颜色。
窗体用五个变量记住当前情况:“输入串”保存尚未结算的文字,“累加值”保存前一步结果,“待定运算”保存运算符,“开始新输入”决定下次数字是替换还是追加,“出错中”标记错误状态。各数字按钮共用输入过程,避免十份几乎相同的逻辑。
结算前先检查除数。以下是项目实际代码中的局部片段:
If 后值 = 0 Then
Call 显示错误("不能除以零")
结算 = False
Exit Function
End If
显示错误时,窗体清除待执行运算,数字区变红,状态改为 ERROR。按 C 后统一重置全部状态,避免只把屏幕清成 0,却仍带着旧运算继续计算。
数值层采用 Double。普通结果按十位小数格式化,较大数或极小非零数用科学计数法显示。这能让 0.1 + 0.2 显示为 0.3,但不代表任意精度计算,也不适合直接作为严谨财务核算工具。正负号切换还会影响字符串长度,不能把“15位上限”提示理解为全面的十五位有效数字保证。
让 AI 点击真实窗体并读取结果
VBAYYDS 的 uitest 可以定位真实 VBA 窗体控件,执行输入和按钮点击,再读取显示值。WorkBuddy 因而能反复运行同一组操作,检查事件绑定、计算过程和显示状态。这里只比较代码里的计算函数还不够:按钮能否点到、显示框是否更新,也需要真实界面测试。

图 5 WorkBuddy 的完成摘要列出真实控件测试;最终判断还要与实际读数和窗体结果核对。
| 测试组 | 实际结果 |
|---|---|
| 四则运算 | 125 + 375 = 500;100 − 37 = 63;24 × 18 = 432;144 ÷ 12 = 12 |
| 小数与顺序 | 0.1 + 0.2 = 0.3;2 + 3 × 4 = 20 |
| 百分比与负数 | 25% = 0.25;9 切换正负后加 4 得到 −5 |
| 输入编辑 | 123 退格得到 12;输入 1.2.3 显示 1.23 |
| 除零与恢复 | 8 ÷ 0 显示“不能除以零”;C 后 6 × 7 = 42 |
| 重开窗体 | 关闭后重新打开显示 0 |
| 补充边界 | 5 + = 得到 5;长输入出现上限提示;极小非零值显示 1E-13 |
| 溢出恢复 | 大数连乘显示“超出范围”和 ERROR;C 后可再次得到 42 |
测试中也出现过需要修正的边界问题。AI 能承担重复点击和复测,使用者仍要判断计算约定、补充边界条件,并核对真实结果。本次验证的是这份工作簿在当前环境中的行为,不代表所有 Office 版本和所有输入都已覆盖。
可复用提示模板
请使用vba相关技能 使用vba窗体完成以下任务:帮我做一个【用途】的小工具。先看表里的说明,窗体采用【配色】,布局紧凑,文字看得清。先打开预览让我确认,再完成按钮功能。完成后使用VBAYYDS的uitest点击真实窗体,按说明逐项核对正常结果、错误提示和清空后的恢复情况,把结果告诉我。
这个案例适合练习把需求说清楚,再让 AI 生成、运行和验证。下一次扩展键盘输入、计算历史或优先级时,应把新规则和测试示例一并补上,再开始改代码。

