wps宏代码学习

推荐学习视频:https://space.bilibili.com/363834767/channel/collectiondetail?sid=1139008&spm_id_from=333.788.0.0

打开宏编辑器和JS代码调试

工具-》开发工具-》WPS宏编辑器
在这里插入图片描述
左边是工程区,当打开多个excel时会有多个,要注意不要把代码写到其他工作簿去了
右边是代码区
在这里插入图片描述
宏是js语言,因此变量或者方法可以网上搜索。比如搜索js变量、js数组方法等。
在这里插入图片描述
在语句行号前面点击,可以打断点。
在这里插入图片描述
使用Console.log(“你好”)打印文字、变量值等
在这里插入图片描述
代码可以使用F11可以逐语句运行,使用F10可以逐过程运行,跳出等
也可以监视变量值
在这里插入图片描述

数据类型

数值分为整数和浮点数,都是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=5b=Number(a)

数值转字符串

	var a=3.14var b=String(a)

进制转换

	var a=12var 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.Value2arr.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"). Value2Console.log(JSON. stringify(arr))

数据输入框、提示框

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462636.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序的上拉刷新与下拉刷新

效果图如下&#xff1a; 上拉刷新 与 下拉刷新 代码如下&#xff1a; joked.wxml <scroll-view class"scroll" scroll-y refresher-enabled refresher-default-style"white" bindrefresherrefresh"onRefresh" refresher-triggered&qu…

python之函数总结

函数 对于函数的学习&#xff0c;我整理了网上的一些资料&#xff0c;希望可以帮助到各位&#xff01;&#xff01;&#xff01; 世界级的编程大师Martin Fowler先生曾经说过&#xff1a;“代码有很多种坏味道&#xff0c;重复是最坏的一种&#xff01;”。 为什么使用函数 问题…

Mybatis学习笔记(二)

八、多表联合查询 (一) 多表联合查询概述 在开发过程中单表查询不能满足项目需求分析功能&#xff0c;对于复杂业务来讲&#xff0c;关联的表有几张&#xff0c;甚至几十张并且表与表之间的关系相当复杂。为了能够实业复杂功能业务&#xff0c;就必须进行多表查询&#xff0c…

从0开始的STM32之旅 7 串口通信(I)

现在&#xff0c;我们终于可以做一些有趣的事情了&#xff1a;那就是来一点串口通信了。串口通信在一定程度上可以辅助我们程序的调试&#xff0c;传递信息&#xff0c;以及做其他令人激动的事情。下面我们就来看看如何开始我们的串口通信之旅。 关于数据通信 通信就是在传递…

医院绩效考核管理系统源码,医院如何构建绩效考核体系?

医院绩效考核管理系统作为现代医院管理的重要组成部分&#xff0c;其核心功能旨在提高医院运营效率、优化资源配置、确保医疗服务质量&#xff0c;以及增强医院竞争力。 业务科室绩效考核体系的构建 临床医疗与医技科室绩效考核的设置 临床医疗的绩效考核采用百分制&#xff…

使用DexClassLoader类动态加载插件dex

DexClassLoader类的源码 package dalvik.system;public class DexClassLoader extends BaseDexClassLoader {public DexClassLoader(String dexPath, String optimizedDirectory,String librarySearchPath, ClassLoader parent) {super(dexPath, null, librarySearchPath, par…

国产服务器部署1.获取银河麒麟V10服务器。首先挂gpt数据盘

要做系统国产化&#xff0c;现记录国产化的全过程&#xff1a;银河麒麟V10采用ARM架构&#xff0c;基于Ubuntu 18.04 LTS版本的Linux操作系统。‌‌ #uname -r 看系统是x86还是arm 1.获取银河麒麟V10服务器。首先挂数据盘。 1&#xff09;#lsblk -f vdb为数据盘。需要格式…

Excel:vba实现插入图片

实现的效果&#xff1a; 实现的代码&#xff1a; Sub InsertImageNamesAndPictures()Dim PicPath As StringDim PicName As StringDim PicFullPath As StringDim RowNum As IntegerDim Pic As ObjectDim Name As String 防止表格里面有脏数据Cells.Clear 遍历工作表中的每个图…

性能测试需求分析详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、客户方提出 客户方能提出明确的性能需求&#xff0c;说明对方很重视性能测试&#xff0c;这样的企业一般是金融、电信、银行、医疗器械等&#xff1b;他们一…

机器学习之fetch_olivetti_faces人脸识别--基于Python实现

fetch_olivetti_faces 数据集下载 fetch_olivetti_faceshttps://github.com/jikechao/olivettifaces sklearn.datasets.fetch_olivetti_faces(*, data_homeNone, shuffleFalse, random_state0, download_if_missingTrue, return_X_yFalse, n_retries3, delay1.0)[source] L…

智能离线语音识别不灵敏?如何改善和提升识别率?

前言 有用户反馈离线语音识别不灵敏&#xff0c;跟着笔者一起分析原因吧。笔者知识能力有限&#xff0c;难免会误&#xff0c;还请大家批评指正。 1 影响离线语音识别的因素 笔者分析离线语音识别不灵敏的原因有以下几点 1.1 运行硬件的算力限制 由于离线语音识别在本地MCU…

人工智能在干部选拔任用中的应用研究

干部选拔任用是关系到党和国家事业发展的重要环节。在当今科技飞速发展的时代&#xff0c;人工智能技术的出现为干部选拔任用提供了新的思路和方法。人工智能以其强大的数据处理能力、精准的分析预测能力和高效的决策支持能力&#xff0c;有望在干部选拔任用中发挥重要作用。 …

Grandle 报错_项目无法编译问题解决

文章目录 AndroidStudio 编译遇到的问题Gradle 报错-无法编译需要解决的问题说明AS 与 AGP 版本对应不同平台AS版本及下载地址gradle 无法下载 和 找不到使用腾讯镜像gradle-wrapper.properties 文件找不到 依赖库无法下载&#xff0c;下载速度慢更换阿里镜像仓库阿里仓库镜像下…

C++ 实现俄罗斯方块游戏

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

JS进阶级案例-----时钟

首先呢&#xff0c;是由四张图片构成&#xff0c;使用css摆放好&#xff0c;再使用JS给三个指针绑定获取时间和要旋转的角度&#xff0c;在获取对应的指针元素&#xff0c;给到定时器&#xff0c;实现时钟动态更新。 <!DOCTYPE html> <html lang"en"> &…

【前端基础】HTML 基础

目标&#xff1a;掌握标签基本语法&#xff0c;能够独立布局文章页。 核心技术点 网页组成 排版标签 多媒体标签及属性 综合案例一 - 个人简介 综合案例二 - Vue 简介 02-标签语法 HTML 超文本标记语言——HyperText Markup Language。 超文本&#xff1a;链接标记&a…

UE5相机系统初探(一)

UE5相机系统初探&#xff08;一&#xff09; 和Unity类似&#xff0c;UE的相机也是由名为Camera的component控制的。那么&#xff0c;在UE中要如何实现一个跟随玩家的第三人称相机呢&#xff1f;假设我们已经有了一个表示玩家的类ACF_Character&#xff0c;首先第一步就是要先在…

数据库->联合查询

目录 一、联合查询 1.联合查询 2.多表联合查询时MYSQL内部是如何进⾏计算的 3.多表联合查询 3.1语法 3.2指定多个表&#xff0c;进行联合查询 3.3通过表与表中的链接条件过滤掉无效数据 3.4通过指定列查询&#xff0c;精简查询结果​编辑 3.5可以通过给表起别名的方式&…

有关《WebGIS开发 从入门到实践》的分享

从30号发布了新书的上架消息之后&#xff0c;已有不少的朋友、学生下单购买了&#xff0c;有部分已经收到了书了&#xff0c;收到书大致翻阅后也第一时间向我进行了反馈。本文结合我在写本书时的思考和收到的大家反馈&#xff0c;给大家介绍一下我们花了三年写完出的《WebGIS开…