如何编写脚本实现表格状态列改为「Complete」时自动弹出输入框录入金额?
实现方案
完全可以实现该需求,针对主流的电子表格工具的实现方法如下:
Google Sheets 实现步骤
- 打开目标表格,点击顶部菜单栏「扩展程序」-「Apps 脚本」进入脚本编辑器
- 清空默认代码,粘贴下方代码段:
function onEdit(e) { // 请修改下方参数适配你的表格:A列=1,B列=2,以此类推 const STATUS_COLUMN = 3; // 状态列对应的列号,示例为C列 const AMOUNT_COLUMN = 5; // 收费金额列对应的列号,示例为E列 const COMPLETE_VALUE = "Complete"; const range = e.range; const sheet = range.getSheet(); // 仅修改状态列、值改为Complete、且对应金额列为空时触发提示 if (range.columnStart === STATUS_COLUMN && e.value === COMPLETE_VALUE && sheet.getRange(range.rowStart, AMOUNT_COLUMN).isBlank()) { const ui = SpreadsheetApp.getUi(); const response = ui.prompt("请输入该任务的客户收费总金额", ui.ButtonSet.OK_CANCEL); if (response.getSelectedButton() === ui.Button.OK) { const amount = response.getResponseText(); // 校验输入是否为合法金额 if (!isNaN(Number(amount)) && Number(amount) >= 0) { sheet.getRange(range.rowStart, AMOUNT_COLUMN).setValue(Number(amount)); } else { ui.alert("输入的金额不合法,请输入数字格式的非负金额"); // 校验不通过则重置任务状态,避免漏填 range.setValue(""); } } else { ui.alert("未填写收费金额,已恢复任务原始状态"); range.setValue(""); } } }
- 按照实际表格修改代码里的
STATUS_COLUMN、AMOUNT_COLUMN参数,保存项目并按提示授权脚本权限即可生效
Microsoft Excel/WPS 表格实现步骤
- 打开目标表格,按
Alt+F11进入VBA编辑器 - 在左侧项目窗口找到对应工作表,双击打开代码编辑窗口,粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) ' 请修改下方参数适配你的表格:A列=1,B列=2,以此类推 Const STATUS_COLUMN As Integer = 3 Const AMOUNT_COLUMN As Integer = 5 Const COMPLETE_VALUE As String = "Complete" Dim amount As Variant ' 仅修改状态列单个单元格时触发逻辑 If Target.Column = STATUS_COLUMN And Target.Cells.Count = 1 Then If UCase(Target.Value) = UCase(COMPLETE_VALUE) And IsEmpty(Cells(Target.Row, AMOUNT_COLUMN)) Then amount = InputBox("请输入该任务的客户收费总金额", "收费金额填写提示") If IsNumeric(amount) And amount >= 0 Then Cells(Target.Row, AMOUNT_COLUMN).Value = CDbl(amount) Else MsgBox "输入金额不合法,请输入有效的非负数字" ' 校验不通过重置状态 Application.EnableEvents = False Target.Value = "" Application.EnableEvents = True End If End If End If End Sub
- 修改参数后将文件保存为「启用宏的工作簿(*.xlsm)」格式,后续打开文件时选择启用宏即可生效
两种方案都做了重复填写规避,若对应行已经填过收费金额,再次修改状态为Complete不会重复触发提示
内容的提问来源于stack exchange,提问作者Andy James
相关产品推荐
相关产品推荐

