WPS文件中如何运行代码? wps表格运行代码的教程

  发布时间:2024-11-14 10:12:35   作者:佚名   我要评论
在WPS表格中,通过VBA代码自定义单元格样式可以极大地提高工作效率,表格中怎么运行代码呢?下面我们就来看看详细的教程

也可以监视变量值

数据类型

数值分为整数和浮点数,都是number类型

var a=Math.trunc(5.984)  //截取整数
var b=Math.random()  //生成随机小数
var c=Math.pow(5,2)  //乘幂
var d=Math.max(3,5)  //求最大值
var d=Math.min(3,5)  //求最小值

字符串是string类型

var a="3.14"
	var b="hello\nworld"
	var c=a+b  //字符串相加,会变成字符串连接

字符串转数值

var a="3"
	var b=5
	b=Number(a)

数值转字符串

var a=3.14
	var b=String(a)

进制转换

var a=12
	var b=a.toString(2)  //转换成二进制,结果为字符串类型
	var b=a.toString(16)  //转换成十六进制,结果为字符串类型

变量申明和赋值

变量有三种声明变量的方式const、var、let

  • const 常量
  • let 变量申明(作用域更小)
  • var 变量申明(作用域更大)
  • var a;//申明单个变量
  • var b,c,d;//申明多个变量
  • var e=1,f=2,g=3.2//申明多个变量并赋值数据类型

单元格边界获取

得到当前有数据内容的单元格行数

像上面的表格,

如果选中A1单元格,按CTRL+方向右键就会跳到F1,按CTRL+方向下键就会跳到A9

如果选中A12单元格,按CTRL+方向右键就会跳到F12,按CTRL+方向下键就会跳到A20

就可以转换成代码:

Range("A1").End(xlToRight).Select();
	Range("A1").End(xlDown).Select();
	Range("A12").End(xlToRight).Select();
	Range("A12").End(xlDown).Select();
	var a=Range("A1").End(xlToRight).Column;
	var b=Range("A1").End(xlToRight).Row;

自动填写表格例程

//测试函数
function test(){
	if(Selection.Column==1 && Selection.Count==1){
		Range('D7').Value2=Selection.Value2
	} else if(Selection.Column==2 && Selection.Count==1){
		Range('D8').Value2=Selection.Value2
	}
}

写入上面代码,如果选中第1列并且选中单元格数量是1个,就让D7单元格值等于选中单元格。如果选中第2列并且选中单元格数量是1个,就让D8单元格值等于选中单元格。

做一个按钮来允许宏

按钮可以输入文字,给按钮指定宏,宏名字就是test。

然后我们选中第一列的一个单元格,再点击按钮,D7就会自动赋值了。

把工作表名字改成“测试表1”

然后加如下代码

function Workbook_SheetSelectionChange(Sh,Target)
{
	if(Sh.Name=='测试表1'){
		test()
	}
}

Workbook_SheetSelectionChange是整个工作簿的回调函数,当选择单元格发生变化的时候就会调用。调用的时候判断当前工作表是不是“测试表1”,如果是就自动运行test宏。

这样就不需要去点按钮了,每次改变选择的单元格就会自动运行。

字符串

数组

arr=Range('A1:C5').Value2

就把上面选中单元格的内容保存到数组arr中了,表格下标从0开始,即arr[0][0]保存的时A1单元格内容

function test2(){
	const arr=ThisWorkbook.Sheets('测试表1').Range('A5').CurrentRegion.Value2
	arr.reverse()
	Range('F5').Resize(arr.length,arr[0].length).Value2=arr
}

CurrentRegion是当前单元格挨着的有内容的单元格全部选中,类似于选中A5单元格然后按alt+A

代码第一行就把上面选中的所有单元格内容保存到数组arr中了

arr.reverse()是把数组内容倒过来

Resize(行数,列数) 是指定单元格行数和列数。

arr.length就是数组的行数。arr[0].length是指的数组第一行的列数

代码第3行就是把数组赋值给F5打头的单元格区域

function submitData(){
	if(checkData()==true){ //自己写个函数来检查数据是否异常   ==true可以省略,通常只写if(checkData())
		const arr=Range('C6').CurrentRegion.Value2		
		const Data=[] //准备一个数组来装数据		
		const targetRow=Sheets('操作记录').Range('A65535').End(3).Row+1  //先取得数据表的最大非空行位并+1作为要写入数据的行位
		let r=0//等下要用r来记录是第几行数量,方便写金额公式的时候判断行位
		for(i=4;i<=11;i++){
			if(arr[i][1]){  //如果单元格有内容
				//金额写成公式字符串,这里使用反引号,在键盘左上角数字1的左侧,反引号里变量可以用${}标出
				let strAmount=`=D${targetRow+r}*F${targetRow+r}`  //假如r=0,targetRow=2,这里就是'D2*F2'
				r++//遇到数量非空行r自增1假如有三行数据,到第三行时r=2,公式就是 D4*F4
				//接下来按数据表的列 构建一个数组
				//人员 领货日期 领货型号 数量 xxx单价 金额 备注
				let rowItem=[arr[1][1],arr[0][1],arr[2][1],arr[i][1],arr[2][3],arr[i][2],strAmount,arr[i][3]]
				//利用push方法把上面的数组一行一行塞进Data构成二维数组
				Data.push(rowItem)
			}
		}
		Sheets('操作记录').Range(`A${targetRow}`).Resize(Data.length,Data[0].length).Value2=Data 
		Sheets('测试表1').Range('D7:D8').ClearContents()
		Sheets('测试表1').Range('D7').Select()
	}else{
		alert('信息不全')
	}
}

单元格为空检查

const DateNotNull= Range('D6').Value2 !=null

打印数组内容

var arr=Range("a2:b5"). Value2
	Console.log(JSON. stringify(arr))

数据输入框、提示框

//	InputBox("请输入分数")  //输入框
//	let num=InputBox("请输入分数","提示",100,100,200)  //第2参数是标题;第3参数是默认值;第4/5参数是窗口坐标
//	alert(num)  //消息提示框
//	MsgBox("你好")
	MsgBox("你好",jsYesNo)  //带是/否按钮的消息框
	MsgBox("你好",jsYesNoCancel)  //带是/否/取消按钮的消息框  MsgBox修改第2参数还支持很多样式

以上就是小编对用户提出问题整理出来的方法步骤,用户从中知道了大致的操作过程为点击开发工具——查看代码——运行——运行子过程/用户窗体——创建——输入代码这几步,方法简单易懂,希望大家喜欢,请继续关注脚本之家。

相关文章

最新评论