用 WorkBuddy 制作 VBA 隔行插入空行窗体

3 次浏览

整理生产任务表、培训签到表时,我们经常需要在每条记录旁边留出填写备注或签字的位置。逐行右键插入容易漏行;记录一多,想统一改成每条留 2 行,也得重复操作。

这个案例用 WorkBuddy 和 VBAYYDS 语音编程制作一个 VBA 窗体:先选中数据区域,再指定插入行数和上方或下方位置。本文结合实际提问、窗体和结果截图,说明怎样表达需求,以及插行代码为什么要从底部向上处理。演示宿主为 WPS 表格。

用 WorkBuddy 制作 VBA 隔行插入空行窗体

本次只做一个小工具,核心输入是每条记录插入的空行数,以及插入方向。窗体同时显示当前选区、选区行数和预计新增行数,方便在修改之前检查影响范围。

需要特别理解:本例插入的是工作表整行,不只是选区内的几个单元格。同一行其他列也会一起下移,因此应在工作簿副本中试用。

先选定数据再打开窗体

源工作簿包含 3 张表。“任务明细”保存生产任务,“上方测试”保存培训记录,“操作说明”记录本次范围、参数和验证规则。两张业务表都以第 4 行作为表头,第 5 行起是数据。

用 WorkBuddy 制作 VBA 隔行插入空行窗体

生产任务明细的连续选区用于确定要处理的原始记录

工作表 本次用途 代表性内容
任务明细 每条记录下方插入 2 行 工单号 产品名称 数量 单价 计划金额
上方测试 每条记录上方插入 1 行 培训编号 姓名 部门 课程 培训时长
操作说明 描述规则和预期位置 连续选区 行数限制 方向 预计新增

操作时先选择“任务明细”的 A6:G9,再打开“隔行插入空行”窗体。这里选中了 4 条原始记录,若每条下方插入 2 行,预计新增就是 4 × 2 = 8 行。这个数字是本次示例的核对值,不需要让普通使用者在首次提问时列出所有结果行号。

准备好数据后,从 WPS 的“工具 → VB 编辑器”进入 VBA,展开 VBAYYDS 菜单并点击“复制项目路径”。本次插件会同时导出项目。随后在 WorkBuddy 新建任务,通过“选择工作空间”加入刚复制的目录,让 AI 能读取对应工作簿和项目文件。

首轮提示先说明目标与下一步

普通使用者不必先知道代码会怎样实现。先讲清楚处理对象、参数和操作方式,再让 AI 展示窗体,往往比一开始要求完整工程更容易核对。

用 WorkBuddy 制作 VBA 隔行插入空行窗体

本案例实际发送的首轮提示与 WorkBuddy 回复界面

下面节选实际首轮提示中的业务要求,省略界面修饰和内部生成细节;截图保留当时发送的原文。

请按 VBA 技能和 VBA 窗体技能处理当前工作簿。先读取“任务明细”“上方测试”“操作说明”和案例要求。
可输入每条记录插入的空行数(1 至 5),可选择插在每行上方或下方,并显示当前选区、选区行数和预计新增行数。
暂不编写业务逻辑,等待我确认。

“按 VBA 技能和 VBA 窗体技能”明确了实现方式,避免只得到一段说明或网页界面。“先读取”给出了数据来源,AI 不需要猜表名、字段和规则。“每条记录”“上方或下方”限定了插入语义,避免把总共插入几行误解成每条插入几行。

显示选区和预计新增数量,是让使用者在执行前看懂影响。“等待我确认”则把下一步收敛到窗体核对;此时先看参数是否齐全、名称是否清楚,不必预先指定最终算法和每个测试答案。

确认窗体后再完成业务逻辑

WorkBuddy 的实际处理画面列出了行数、方向和选区信息等需求。它的回复说明正在处理什么,但功能是否完成仍要看真实窗体与工作表变化。

用 WorkBuddy 制作 VBA 隔行插入空行窗体

WorkBuddy 对行数方向和选区显示需求进行整理

语音或自然语言描述可以用于生成窗体;生成后的窗体可在 VBA 中手动编辑和微调。本例运行界面保留“预览影响”“确定”“取消”,输入 2 并选择“下方”时,预计新增显示 8。

用 WorkBuddy 制作 VBA 隔行插入空行窗体

真实 VBA 窗体显示选区 4 行以及预计新增 8 行

第二轮提示在预览通过后要求补全逻辑,重点是从底部向上插入、清空新增行内容、执行前二次确认,以及保留上次参数。预览和确认应分开:预览只说明影响,点击“确定”并通过二次确认后才修改工作表。

代码怎样避免插入后行号错位

本例主要代码集中在 frm隔行插入空行 窗体中,没有额外拆成多层业务模块。理解各过程的职责,比逐行记忆代码更有助于修改自己的案例。

初始化过程读取 Selection,记录选区首行、末行、行数和地址。输入改变后,Update预计新增 用原始选区行数乘以参数 n。点击预览或确定时,ValidateSelection 先做检查;真正的插入由 DoInsert 执行。

从末行向首行处理

以下为项目插入定位逻辑节选,省略了格式复制与错误处理。

For i = mLastRow To mFirstRow Step -1
If 方向 = "下方" Then
insertPos = i + 1
Else
insertPos = i
End If
ws.Rows(insertPos).Resize(n).Insert Shift:=xlDown
Next i

如果先在第 6 行下方插入空行,原来的第 7 行就会向下移动,继续按原行号处理容易选错记录。从第 9 行往第 6 行倒序处理,下面的插入不会改变上面尚未处理记录的位置,因此能保持原始顺序。

新增行只留格式不留内容

插入以后,代码复制格式,再清空新增行的内容。ClearContents 与删除格式不是一回事:本例希望保留边框、填充和数字格式,同时不把原记录的值或公式带入空行。

ws.Rows(insertPos).Resize(n).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
ws.Rows(insertPos).Resize(n).ClearContents

原记录中的计划金额仍应由数量与单价计算。插入整行时,公式引用可能随原记录位置调整;核对重点是计算关系和结果没有被破坏,而不是要求公式中的行号字符完全不变。

参数保存与错误处理

SaveLastParams 把行数和方向写入工作簿名称 cfgLastRows、cfgLastDir,LoadLastParams 在窗体初始化时读取。若希望关闭文件后继续保留,需要保存工作簿。错误处理会恢复屏幕刷新并中止操作,但没有撤销已插入行的完整回滚机制,因此不能把报错等同于“工作表完全没变”。

下方插入的结果怎样核对

在任务明细 A6:G9 中选择 4 条记录,参数设为下方 2 行。演示结果中,WO260902 仍在第 6 行,下方第 7 至 8 行为空;下一条 WO260903 移到第 9 行,下方继续留出空行。

用 WorkBuddy 制作 VBA 隔行插入空行窗体

下方插入后第 7 至 8 行为空而下一条工单顺序保持

下面是依据本例原始行号和插入规则得到的完整核对位置。截图展示其中可见的前两组,检查其余组时需要继续查看工作表。

原工单号 插入前行号 插入后应在 下方应为空的行
WO260902 6 6 7 至 8
WO260903 7 9 10 至 11
WO260904 8 12 13 至 14
WO260905 9 15 16 至 17

不要只看“执行成功”的提示框。还应核对工单号没有丢失或重复,原记录的次序没有改变,新增行没有残留文字和公式,并查看选择范围之后的记录是否正常下移。本次规则下,原数据末行应由第 14 行移到第 22 行。

公式也有可用的检查点:WO260902 的 24 × 1980 应为 47520,WO260903 的 36 × 860 应为 30960。截图中这两个金额与原始数据一致。它们用于验证本次样例,不代表整本工作簿的所有公式都已经逐项测试。

上方插入与实际使用边界

第二组在“上方测试”选择 A6:F9,设置每条记录上方插入 1 行。原第 6 行的 TR260902 移至第 7 行,其上方第 6 行留空;TR260903 移至第 9 行,第 8 行留空。按同一规则,后两条应位于第 11、13 行,合计新增 4 行。

用 WorkBuddy 制作 VBA 隔行插入空行窗体

上方插入后空行位于对应培训记录之前

两组演示覆盖下方 2 行与上方 1 行。推广到其他工作表之前,还应测试多区域、整列、合并单元格、表头、保护工作表、已存在空行,以及同一范围重复运行。重复执行会继续增加空行,本例没有重复执行拦截。

代码复核还提示两项要加强的边界。当前用 Val 解析输入,像“2abc”这样的文本可能被取成 2,正式使用应改为完整整数校验。上方一次插入多行时,原记录会移到 i+n,而当前格式来源按 i+1 定位;上方 2 至 5 行的格式复制应修正并复测后再使用。这些不能用演示中的上方 1 行结果代替验证。

换成自己的表格时,可以用下面这份整理后的短提示。它是可复用模板,不是本案例首轮原文。

请按 VBA 技能和 VBA 窗体技能读取当前工作簿,为选中的连续数据区域做一个 VBA 窗体。让我指定每条记录插入几行空行,以及插在上方还是下方。执行前显示影响并让我确认,保留原记录和公式。先展示窗体,确认后再完成代码,并告诉我需要测试哪些边界。

这个案例适合练习用自然语言明确“处理哪一部分、参数是什么、何时真正修改数据”。WorkBuddy 帮助生成窗体与代码,使用者仍需要核对原始数据和实际结果。先在副本上验证,再用于正式表格,才能把小工具用得可靠。

用 WorkBuddy 制作 VBA 隔行插入空行窗体插图7

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