WPS宏编辑器开发,单元格内容变更自动触发事件

写在前面

我先生用EXCEL做了一张学生存款表。设计得很简单,A学生已存款X元,A学生再次存款Y元,A学生此时的存款金额就为X+X的利息+Y,并且把存款日期更新成当前日期。里面涉及到了一个功能:也就是当存款金额发生变动的时候,更新存款日期。先生觉得手动更改太麻烦,就问我有没有什么办法。
我想了下,假如我编个程序来进行这项工作是很简单的,但是如何在Excel中来完成这个操作确实没有头绪。于是我打开搜索,输入Excel触发器,然后就看到了这个又熟悉又陌生的名词。
以上是背景。

宏的开发

先不管宏是什么,我们直接上手用一下。

1、切换宏编辑器开发环境

首先新建一张工作簿,点击“工具”选项卡中的“开发工具”

在这里插入图片描述

对于部分VBA和WPS宏编辑器共存的WPS版本,默认的开发环境是VBA,您可以通过点击“开发工具”选项卡的“切换到JS环境”来切换当前的开发环境,如下图:
在这里插入图片描述
切换到JS环境后,点击“WPS宏编辑器”选项卡,会跳出宏编辑器窗口,我们就可以在这个窗口中进行代码编程。
在这里插入图片描述
在这里插入图片描述

2、小练习:自定义函数

在WPS 开放平台中有一篇名为《自定义函数》的文章,可以仿照练习,对宏编辑器的功能进行一个简单的认识。
在这里插入图片描述
注意这里存储文件的时候,会弹出“无法在未启用宏的工作簿中保存以下功能”的提示。
在这里插入图片描述
这是由于VBA或者宏代码有一定的危害性,为了提高安全意识,凡是以XLSX为后缀名的文件都不能含有宏代码,这样收到文件的人就可以一目了然的了解文件是否含有宏。当在弹出的提示框中直接选择“是”时,保存的文件将自动删除所有的宏代码。如果需要保存为含有宏代码的文件,则可以单击按钮“否”然后选择其中一个文件类型。
在这里插入图片描述

3、完成功能需求:单元格内容变更自动触发事件

学习了宏编辑器的基础使用后,回到我们最开始的功能需求:当存款金额发生变动的时候,更新存款日期。也就是指定单元格内容变更时自动触发一个事件。在WPS开放平台中,我们可以看到,SheetChange这个事件可以满足我们的需求。接下来使用该事件进行编程。
在这里插入图片描述
语法示例:在这里插入图片描述
针对我们的功能需求进行编程如下:

function Workbook_SheetChange(Sh, Target)
{
	if(Target.Column==4){
		    Target.Select()
		    var strTitle="来自十一的温馨提示"
		    var strMessage=Range("B"+Target.Row) +"的本金发生修改,是否更新其存款时间?"
		    var nStyle=jsYesNo+jsExclamation+jsDefaultButton2
			var ret=MsgBox(strMessage,nStyle,strTitle)
			if(ret==jsResultYes){
				Range("C"+Target.Row).Value2=new Date()
			}
	}
}

在这里插入图片描述
在这里插入图片描述

总结

酷,没想到Excel居然也能用到编程了。
具体语法,参考WPS开放平台中提供的接口。
WPS开放平台
MsgBox
Range
JS语法学习
WPS JS 宏教程(一)-宏的介绍
WPS JS 宏教程(二)-从VBA到JS宏
WPS JS 宏教程(三)-自定义函数
WPS JS 宏教程(四)-WPS表格中的事件
WPS JS 宏教程(五)-编写 WPS 宏的工具箱

Java基础不好的小水怪,正在学习。有错请指出,一起加油。

### 回答1: 您可以使用WPS JS宏编写代码来实现控件随单元格移动的功能。以下是一个简单的示例代码: ```javascript function onCellChange(range) { // 获取控件对象 var control = this.Document.getControl("控件名称"); if (control != null) { // 获取控件左上角单元格的位置 var leftTopCell = control.getLeftTopCell(); var row = leftTopCell.getRow() + range.getRowCount() - 1; var column = leftTopCell.getColumn() + range.getColumnCount() - 1; // 设置控件左上角单元格的位置 control.setLeftTopCell(this.Document.getRange(row, column)); } } ``` 在这个示例中,我们定义了一个名为`onCellChange`的函数,它会在单元格内容变化时被触发。在函数中,我们首先获取了指定名称的控件对象,然后根据控件左上角单元格的位置和单元格内容变化的范围,计算出控件应该移动到的新位置,并将其设置为控件的左上角单元格。 您需要将此代码复制到WPS文档中的JS宏编辑器中,并将其中的`控件名称`替换为您实际使用的控件名称。然后,您需要在WPS文档中选择“开发工具”->“JS宏”->“宏设置”,并将“单元格变更事件”设置为我们刚才定义的`onCellChange`函数。这样,当您在文档中更改单元格内容时,控件就会自动随着单元格移动了。 ### 回答2: WPS JS宏是一种在WPS表格中使用的自动化脚本工具。通过编写JS宏,我们可以在表格中实现自动化的操作。 其中,控件是JS宏中的一种对象,可以在表格中添加各种交互元素,如按钮、文本框等。这些控件可以与单元格进行绑定,从而与表格中的数据进行交互。 随单元格移动是指当单元格在表格中移动时,控件也会随之一起移动。这样的功能非常有用,可以确保控件始终与相关的数据单元格保持对应关系。 要实现这个功能,我们可以使用WPS JS宏提供的事件处理函数。事件处理函数可以捕捉到表格的各种事件,包括单元格移动事件。通过在事件处理函数中编写代码,我们可以在单元格移动时,自动调整控件的位置。 具体做法是在JS宏的代码中,使用事件处理函数监听表格的单元格移动事件。当该事件触发时,可以获取到移动之前和移动之后的单元格位置。然后,我们可以通过计算单元格位置的差值,将控件相应地移动。 例如,可以使用控件的left和top属性来改变其相对于表格的位置,从而实现随单元格移动的效果。通过监听多个单元格移动事件,我们可以根据实际需求,对控件的位置进行灵活的调整。 总之,WPS JS宏中的控件可以随着单元格的移动而进行相应的位置调整。通过编写事件处理函数,我们能够实现控件与单元格之间的自动关联,从而实现更加智能化的表格操作。 ### 回答3: WPS JS宏控件随单元格移动是指在WPS表格中使用JS宏控件时,当单元格移动或插入行列时,控件也会相应地移动。 WPS表格是一款功能强大的电子表格软件,通过使用JS宏控件,我们可以添加自定义的功能和操作。当我们在表格中插入或移动单元格时,表格中的内容会被移动或调整,而WPS JS宏控件也会相应地随之移动。 通过在JS宏控件的代码中使用相应的事件处理程序,我们可以实现控件随单元格移动的功能。比如在单元格内容发生变化时,我们可以通过编写代码来重新定位和调整控件的位置,使其与单元格保持一致。 实现控件随单元格移动的过程可以分为以下几个步骤: 1. 监听单元格移动或插入行列的事件,比如onCellMove或onAddRow。 2. 在事件处理程序中,获取要移动的单元格的位置信息,比如行索引和列索引。 3. 通过控件的相关属性或方法,重新设定控件的位置,使其与目标单元格保持一致。 4. 更新控件的显示和布局,确保控件在新位置上正确显示。 通过以上步骤的操作,我们可以实现WPS JS宏控件随单元格移动的功能。这样,在表格中移动或调整单元格时,控件也会相应地移动,保持与单元格的对应关系,提高了表格的可用性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值