wps宏怎么启用(WPS无法启用宏)

首先,学以致用学习是需要付诸实践的,就像我家小姑娘在学算法(就是掰着指头算加减),天天求着给她出题。今天我们来做一个简单的宏,它实现了以下内容:根据跟定最大数限

首先,学以致用

学习是需要付诸实践的,就像我家小姑娘在学算法(就是掰着指头算加减),天天求着给她出题。今天我们来做一个简单的宏,它实现了以下内容:

根据跟定最大数限制,生成加减法运算题。根据答题情况,给出对错提示。

二、行万里路。

按照先分解后组合的方法,先把问题分解成几个小问题,逐步解决后再组装成成品。

1.生成一个题库。

/* * 生成题库 * @param {number} maxNumber 所出题目计算结果最大值 * @param {string} operator 操作符号[+,-] * @return {Array} **/function GenerateQuestionBank(maxNumber, operator) { return Array.from( // 按顺序生成题目的第一个参数 // 类似1,2,3...9的形式 { length: maxNumber }, (_, k) => k + 1 ).map( arg1 => Array.from( // 同理生成第二个参数 // 加法为了不超出计算最大边界需要控制一下数量 // 减法为了不出现负数让参数2最大值不超过参数1 // 详见附加解释 { length: operator == "+" ? (maxNumber - arg1) : arg1 }, (_, k) => k + 1 ).map( // 生成题库公式 arg2 => `${arg1}${operator}${arg2}=` ) )}

上面的代码其实是用for循环写的,很好理解。之所以采取地图数据转换的形式,是为了显示JavaScript的优势。

另一个问题是,当我们生成参数2(arg2)时,我们分别限制了加法和减法。

防止和的最大值超出上限,毕竟题是出给一个还在靠指头来计算的童鞋。减法防止出现负数,跟一位刚脱离尿不湿的同志谈负数,我还没有那个胆量。

2.平面阵列

/* * 数组扁平化,将多维数组转1维度 * @param {Array} arr 原始数组 * @return {Array} 转制后的数组 **/function flatten(arr) { return arr.reduce((total, itm) => total.concat(...itm), []);}

这个不难。题库生成2维数组,不方便输出。为了便于输出,它被转置为一维。

好吧,先看看效果如何。

function test() { // 执行此宏查看效果 const maxNumber = 10; let addQuestionBank = flatten(GenerateQuestionBank(maxNumber, "+")); let subQuestionBank = flatten(GenerateQuestionBank(maxNumber, "-")); addQuestionBank.forEach( (itm, idx) => Range(`A${idx + 1}`).Value2 = itm ) subQuestionBank.forEach( (itm, idx) => Range(`B${idx + 1}`).Value2 = itm )};用JavaScript拥抱WPS(二)

Wps利用JavaScript生成加减法题库用Wps JavaScript生成加减题库

第三,千变万化

如果我按照上面的安排直接把题给我的小女儿,她会掰着手指,不屑地在网上看我的智商,只好随机处理题库。

/* * 数组随机排列 * @param {Array} arr 原始数组 * @return {Array} 转制后的数组 **/function random(arr) { return arr.sort(() => 0.5 - Math.random())}

这段代码相对简单。它以不定的方式返回正负函数作为一个排列函数,所以返回排列顺序也是不定的,达到了随机的效果。

用JavaScript拥抱WPS(二)

WPS随机输出题库演示WPS随机输出题库演示

4.是对还是错?

带着问题,我们需要老师来评判。让我们根据孩子的输入值来完成给出检查的部分。

绑定表值变更事件Workbook_SheetChange,阅读对应的题目,用eval进行评估,然后与输入值进行比较,判断对错,大致如下。

function Workbook_SheetChange(_, rg) { if (rg.Row >= 2) { let question = null; switch (rg.Column) { case 2: rg.Interior.Pattern = xlPatternNone; question = Range(`A${rg.Row}`).Value2; break; case 4: rg.Interior.Pattern = xlPatternNone; question = Range(`C${rg.Row}`).Value2; break; } if (question && rg.Value2) { if (eval(question.replace("=", "")) != rg.Value2) { // 错误用红色背景 rg.Interior.Color = 255; } } }}用JavaScript拥抱WPS(二)

WPS题库验证演示WPS测试库验证演示

当然,如果有时间,可以用图像代替背景色,比如送一朵小红花,这是我的最爱。

动词 (verb的缩写)结论。

以上内容没什么新意,就拿这个题目来体验一下在WPS中用JavaScript开发的感觉吧。

总的来说,最大的优势在于JavaScript语法的表现力。

也可以通过录制宏来参考未知。自己的IDE不是很好用,但是就写JavaScript而言,用VsCode做编辑器是首选。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/123288.html

发表回复

登录后才能评论