下面以创建一个“把A列项与B列项相加的结果在C列项”的表格为例,命名为《A加B等于C.xlsm》
表格如下:
A | B | C |
---|---|---|
3 | 2 | 5 |
2 | 2 | 4 |
40 | 1 | 41 |
把 base.xlsm 复制粘贴到你要放的位置,并把粘贴出来的base.xlsm副本命名为 A加B等于C.xlsm
在任意位置建立文件夹,并在文件夹内建立js文件 plusAToB.js
打开代码编辑器(sublime或者atom或者什么都可以),对 plusAToB.js 进行编辑,输入以下代码:
ExcelResult = Number(ExcelArgu[0]) + Number(ExcelArgu[1]);
Starting up http-server, serving ./
Available on:
http://172.27.35.27:8080
http://192.168.174.1:8080
http://192.168.159.1:8080
http://192.168.137.1:8080
http://127.
0.
0.1:8080
Hit CTRL-C to stop the server
可在浏览器访问 http://127.0.0.1:8080/plusAToB.js ,若出现步骤3中的代码,即表示成功运行http-server
打开 A加B等于C.xlsm ,excel软件提示是否启用宏的时候,选择 是
切换至 BASE_CODE_LIB 工作表,在单元格 A4 输入内容 plusAToB.js
摁下快捷键 Ctrl+Shift+R 后,单元格 B4 便出现步骤3中的代码,表示plusAToB.js的代码成功写入xlsm中
切换至 Sheet1 工作表,在单元格 A1 输入内容 3,在单元格 B1 输入内容 2
在单元格 C1 输入内容 =runJS("plusAToB.js",A1,B1) ,回车后,C1 便显示 A1+B1的值 则 5
在单元格 A2 输入内容 2,在单元格 B2 输入内容 2
在单元格 C2 输入内容 =runJS("plusAToB.js",A2,B2) ,回车后,C2 便显示 A2+B2的值 则 4
在单元格 A3 输入内容 40,在单元格 B3 输入内容 1
在单元格 C3 输入内容 =runJS("plusAToB.js",A3,B3) ,回车后,C3 便显示 A3+B3的值 则 41
BASE_CODE_LIB 工作表 是用于存放js代码的,任何js代码要执行,都必须被存储在这里。
快捷键 Ctrl+Shift+R 是调用vba函数(宏)UpdataJSFiles,该vba函数将会执行 UpdataJSFiles.js
由于vba调用的js引擎是windows系统COM组件的“Microsoft Script Control”,所支持的js特性较少,因此js的规范要参考IE6的js规范
在js中 ExcelResult 作为单元格的返回值,默认是0,可以被设置成其他
在js中 ExcelArgu 是 runJS函数所传递的参数,具体说明如下:
在 runJS("plusAToB.js",A1,B1) 中
ExcelArgu[0] 为 单元格A1的值
ExcelArgu[1] 为 单元格B1的值
// yewuxiezuo-zhixingshouceLib.js 文件
define(
[],
function ()
{
var obj = {
getMarkIndex: function (dataIDs, _searchNum)
{
var len = dataIDs.length;
for(var i = 0 ;i < len; i ++){
if(_searchNum == dataIDs[i]){
return i;
}
}
},
getMarkName: function (numData, manData, _searchNum)
{
return manData[this.getMarkIndex(numData, _searchNum)];
}
};
return obj;
}
)
// 文件yewuxiezuo-idToManl.js
define(
["yewuxiezuo-zhixingshouceLib.js"],
function (zhixingshouceLib)
{
var numData = ExcelArgu[0];
var manData = ExcelArgu[1];
ExcelResult = zhixingshouceLib.getMarkName(numData, manData, ExcelArgu[2]);
}
)
在 BASE_CODE_LIB 工作表的A列中,从A1到A列中最后一个出现内容的单元格,中间不能出现出现任何没有内容的单元格
由于js错误处理尚未有解决方案,因此展示无法提示js哪里出现错误,请认真写代码仔细审查
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。