VBA 0071 零基础自然语言实战
这篇文章演示了一个完整结果:只用日常说话的方式描述需求,WorkBuddy 和 VBAYYDS 就能在 Excel 中自动绘制合同续期窗体、生成 VBA 代码,并把新的到期日期与续期记录写回工作簿。

案例成品封面
完成后能做什么
- 输入合同编号,查看到期日期、剩余天数和风险等级。
- 填写续期日期、新到期日期和经办人,一次完成台账更新。
- 自动保存续期记录,并拦截不存在、已终止、日期错误和重复登记。
先把需求说给 WorkBuddy
不需要先学会属性名、事件过程或数据库语句。把自己平时怎么跟同事说需求,就怎么告诉 WorkBuddy。本案例使用下面这段话。
请使用 VBA 相关技能,使用 VBA 窗体完成以下任务。
帮我在这个 Excel 里做一个合同到期提醒和续期登记工具。
输入合同编号,就能看到什么时候到期、还剩多少天、风险高不高。合同续签时,填上新的到期日期和经办人,点一下就更新合同,并保存续期记录。
如果合同不存在、已终止、日期填错或者重复登记,请及时提醒我。界面做得清爽好看,并帮我测试能不能正常使用。
这段话告诉了工具什么
- 数据从哪里来:用合同编号在现有台账里查找。
- 界面需要什么:查询、风险提示、续期输入和确认写回。
- 什么情况必须阻止:无效合同、已终止合同、错误日期和重复记录。
WorkBuddy 和 VBAYYDS 自动完成的步骤
WorkBuddy 先读取工作簿中的合同台账、业务参数和续期记录结构,再通过 VBAYYDS 创建窗体与代码。整个过程不需要手工逐个摆放控件。
01 理解工作簿 确认合同编号、合同名称、相对方、到期日期和剩余天数等字段。
02 绘制续期窗体 生成合同查询区、风险提示区和续期登记区。
03 生成 VBA 代码 写好查找、日期校验、风险计算、台账更新和记录追加逻辑。
04 运行测试 验证正常续签、错误日期、已终止合同和重复登记等情况。

窗体查出 CT-008 的到期日期、剩余 10 天和高风险状态
本次录制和测试中,所有演示宏都通过 VBAYYDS CLI 调用,没有从 VBA 编辑器手动执行。
完成一次合同续期
演示选择合同 CT-008,续期日期为 2026 年 9 月 5 日,新到期日期为 2027 年 9 月 15 日,经办人为林珊。确认后,窗体同时更新台账和续期记录。
写回前后的变化
| 对比项 | 续期前 | 续期后 | 变化 |
|---|---|---|---|
| 到期日期 | 2026-09-15 | 2027-09-15 | 延长一年 |
| 剩余天数 | 10 | 375 | 自动重新计算 |
| 风险等级 | 高风险 | 正常 | 自动调整 |

台账回写结果 CT-008 到期日期更新为 2027-09-15
窗体不只替换日期。它还会用新到期日期减去基准日期,重新计算剩余天数,并把原来的“高风险”调整为“正常”。
保存续期记录
每次成功续签都会生成一条独立记录。本次生成的记录编号为 RN20260905-001,同时保留原到期日期、新到期日期、续期状态和经办人。

续期记录 RN20260905-001 由林珊经办
记录中保留的信息
- 记录编号和合同编号,方便后续查找。
- 续期日期、原到期日期和新到期日期,保留变更前后的依据。
- 续期状态和经办人,让每一次操作都有可核对的记录。
拦截错误和重复登记
代码在写回前先做校验。合同不存在、已终止、续期日期格式错误、新到期日期早于原到期日期,或者同一条记录已经存在时,窗体会停止写入并说明原因。
- 找不到合同编号时,不进入续期步骤。
- 合同已终止时,禁止再次续签或登记。
- 日期格式错误或新日期不合理时,显示具体提示。
- 同一合同、续期日期、新到期日期和状态已存在时,阻止重复写入。

重复登记被拦截 原有台账和记录不会被再次改动
真实生成的 VBA 代码
VBAYYDS 生成的不是一张界面图,而是可以继续修改和维护的 VBA 窗体、模块和事件代码。下图展示了本案例在 VBA 编辑器中的实际代码。

实际生成的合同续期 VBA 代码
风险等级是怎么计算的
Public Function 计算风险等级(ByVal 剩余天数 As Long) As String
If 剩余天数 < 0 Then
计算风险等级 = "已过期"
ElseIf 剩余天数 <= 15 Then
计算风险等级 = "高风险"
ElseIf 剩余天数 <= 30 Then
计算风险等级 = "中风险"
Else
计算风险等级 = "正常"
End If
End Function
适合零基础使用的原因
使用者需要先想清楚的,是“我想让 Excel 帮我做什么”。界面控件、代码结构和测试步骤由 WorkBuddy 和 VBAYYDS 来完成。上手时可以先用一段自然语言说明核心流程,看过第一版后,再用“把按钮放大一点”、“增加终止提示”这类简单句子继续调整。
最终验证:案例已完成窗体生成、VBA 代码展示、正常续签回写和重复登记拦截。合同 CT-008 的到期日期已从 2026 年 9 月 15 日更新到 2027 年 9 月 15 日,并生成续期记录 RN20260905-001。

