乐于分享
好东西不私藏

【WPS JSA】选择写入枚举字典

【WPS JSA】选择写入枚举字典

大家好,我是宽吻鳄。这里是「宽吻鳄画表勒格记」——专注WPS表格硬核技巧,每期干货,让你的工作效率直线飙升!欢迎关注,咱们一起解锁更多高效技能!

在日常工作中,根据要求或需求不同,我们经常要设计不同样式的工作表,工作表的基本元素如单位全称、单位简称、预算代码、单位编码、各种类别或类型、行政区域、及不同级次文本编码等等会常用的,一种是用到时到处找,整理着用;还有一种是整理好枚举字典,随时用。后一种方便很便捷,每一次使用的也标准,特别是涉及表间提取数据或汇总计算时作用就更明显了。

今天,重点介绍用JSA代码选择写入枚举字典。可下载示例资料,试一试是否好用,欢迎在评论区留言,一起学习探讨。

请记住一个WPS表格应用原则:凡是涉及批量或重复性操作,JSA(JavaScript for Application)宏代码都能帮你一键完成,秒速搞定!

要想活干得快,漂亮,还不加班,就来学习WPS JSA宏编程!磨刀不误砍柴功,打铁还需自身硬。

来吧,直接上代码。

WPS JSA】代码:

function 选择写入枚举字典() {    try {        var sheet = Application.ActiveSheet;        var sel = Application.Selection;        // 处理选区可能为多个区域的情况(如按住Ctrl点选),始终取第一个区域的左上角        var startCell = null;        if (sel && sel.Cells) {            startCell = sel.Cells(11);   // 多区域选区        } else if (sel && sel.Row) {            startCell = sel;               // 单个单元格        } else {            MsgBox("请先选中一个单元格作为起点。"0"提示");            return;        }        var row = startCell.Row;        var column = startCell.Column;        // =数据定义        var 一级编码 = ["一""二""三""四""五""六""七""八""九""十"];        var 二级编码 = ["㈠""㈡""㈢""㈣""㈤""㈥""㈦""㈧""㈨""㈩"];        var 三级编码 = ["⒈""⒉""⒊""⒋""⒌""⒍""⒎""⒏""⒐""⒑"];        var 四级编码 = ["⑴""⑵""⑶""⑷""⑸""⑹""⑺""⑻""⑼""⑽"];        var 五级编码 = ["①""②""③""④""⑤""⑥""⑦""⑧""⑨""⑩"];        var 预算代码 = ["666000""666001""666002""666003""666004""666005"];        var 单位全称 = [            "吉林省JSA宏研究局"            "吉林省JSA宏研究局第901所",            "吉林省JSA宏研究局第902所",            "吉林省JSA宏研究局第903所",            "吉林省JSA宏研究局第904所"            "吉林省JSA宏研究局第905所"        ];        var 数据选项 = [一级编码, 二级编码, 三级编码, 四级编码, 五级编码, 预算代码, 单位全称];        var 选项名称 = ["一级编码""二级编码""三级编码""四级编码""五级编码""预算代码""单位全称"];        // 第一步:用 InputBox 选择数据类型        var promptMsg = "请输入数字选择数据类型(1-" + 选项名称.length + "):\n\n";        for (var i = 0; i < 选项名称.length; i++) {            promptMsg += (i + 1+ " = " + 选项名称[i];            // 每3个换行,让显示更整齐            if ((i + 1% 3 === 0 && i < 选项名称.length - 1) {                promptMsg += "\n";            } else if (i < 选项名称.length - 1) {                promptMsg += ";";            }        }        promptMsg += "\n\n0 = 取消操作";        var choiceStr = InputBox(promptMsg, "枚举字典数据写入""1");        // 用户点击"取消"或输入为空时        if (choiceStr === "" || choiceStr === undefined || choiceStr === null) {            MsgBox("操作已取消"0"提示");            return;        }        var idx = parseInt(choiceStr);        if (isNaN(idx) || idx < 1 || idx > 选项名称.length) {            MsgBox("输入无效,请输入 1 到 " + 选项名称.length + " 之间的数字。"0"错误");            return;        }        idx = idx - 1;        var data = 数据选项[idx];        var name = 选项名称[idx];        // 第二步:确认选择        var confirmResult = MsgBox(            "您选择了:【" + name + "】\n" +            "共 " + data.length + " 条数据\n\n" +            "预览前3条:\n" +            data.slice(03).join("、"+ "\n\n" +            "点击【是】继续写入\n" +            "点击【否】取消操作",            4,  // 4 = 是/否按钮            "确认选择"        );        if (confirmResult === 7) {   // 7 = 否            MsgBox("操作已取消"0"提示");            return;        }        // 第三步:选择写入方向        var dirResult = MsgBox(            "请选择写入方向:\n\n" +            "点击【是】→ 纵向写入(向下)\n" +            "点击【否】→ 横向写入(向右)\n" +            "点击【取消】→ 取消操作",            3,  // 3 = 是/否/取消按钮            "写入方向"        );        if (dirResult === 2) {  // 2 = 取消            MsgBox("操作已取消"0"提示");            return;        }        // 第四步:执行写入        if (dirResult === 6) {  // 6 = 是,纵向写入            for (var i = 0; i < data.length; i++) {                sheet.Cells(row + i, column).Value2 = data[i];            }            MsgBox(                "✅ 写入完成!\n\n" +                "数据类型:" + name + "\n" +                "写入位置:从第 " + row + " 行第 " + column + " 列开始向下\n" +                "写入条数:" + data.length + " 条",                0,                "完成"            );        } else if (dirResult === 7) {  // 7 = 否,横向写入            for (var i = 0; i < data.length; i++) {                sheet.Cells(row, column + i).Value2 = data[i];            }            MsgBox(                "✅ 写入完成!\n\n" +                "数据类型:" + name + "\n" +                "写入位置:从第 " + row + " 行第 " + column + " 列开始向右\n" +                "写入条数:" + data.length + " 条",                0,                "完成"            );        }    } catch (e) {        MsgBox("❌ 发生错误:\n" + e.message + "\n\n错误行号:" + (e.line || "未知"), 0"错误");    }}

往期内容推荐:

【WPS JSA】秒删空行_当前表选择区域
【WPS JSA】秒删工作表数据区域内所有空行
【WPS JSA】工作表按字段拆分多个工作表
【WPS JSA】提取工作簿工作表目录及表头信息
【WPS JSA】名字分组折行一次性生成分组名单
【WPS JSA】对选择区域隔一行插n行
【WPS JSA】设置打印页面参数_所有工作表
【WPS JSA】设置打印页面参数_当前工作表
【WPS JSA】登记表模板一次性写入公式
持续更新,上干货;不迷路,请多关注!
工欲善其事,必先利其器。
利器在手,天下我有。
JSA代码就是利器!
可下载以下资料查看测试:
2026年06月29日-【WPS JSA】选择写入枚举字典-示例.zip
温馨提示:
1.请下载示例,尝试运行宏,查看实际效果,多练习,理解掌握宏运行原理。
2.使用JSA宏代码对实际工作表进行操作前,一定一定一定做好原数据备份,防止操作不当等造成数据丢失。