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参数还支持很多样式
相关文章:

wps宏代码学习
推荐学习视频:https://space.bilibili.com/363834767/channel/collectiondetail?sid1139008&spm_id_from333.788.0.0 打开宏编辑器和JS代码调试 工具-》开发工具-》WPS宏编辑器 左边是工程区,当打开多个excel时会有多个,要注意不要把…...

libavdevice.so.58: cannot open shared object file: No such file ordirectory踩坑
博主是将大图切分成小图时遇到 问题一、linux编译后,找不到ffmpeg中的一个文件 产生原因,各种包集成,然后安装以后乱七八糟,甚至官方的教程也不规范导致没有添加路径到系统文件导致系统执行的时候找不到 1.下载 博主进行的离线…...
Rust:Vec<u8> 与 [u8] 之间的转换
在 Rust 中,Vec<u8> 是一个动态数组,而 &[u8] 是一个指向字节切片的不可变引用。这两者之间经常需要进行转换,因为它们在处理字节数据时非常常见。 从 &[u8] 转换为 Vec<u8> 要将一个字节切片 &[u8] 转换为一个 Ve…...

Leetcode 课程表
这段代码的算法思想是基于**深度优先搜索(DFS)**来检测图中的环路,从而判断是否可以完成所有课程。具体来说,我们将每门课程和它的先修关系视为一个有向图,问题的核心就是判断这个有向图中是否存在环路。如果有环路&am…...

Java面试经典 150 题.P55. 跳跃游戏(009)
本题来自:力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解: class Solution {public boolean canJump(int[] nums) {int…...
登录的时候密码使用crypto-js加密解密
首先要下载插件 npm install crypto-js 然后新建一个js文件 crypto.js // 导入 CryptoJS 模块 import CryptoJS from crypto-js; const secretKey"pZsgDSvzaeHWDkhLDxvrrrYvBlAsIHmZ";//一般是后端提供的 /*** description: 加解密函数* param {*} data 需要加密的数…...
LLM大模型部署实战指南:部署简化流程
LLM大模型部署实战指南:Ollama简化流程,OpenLLM灵活部署,LocalAI本地优化,Dify赋能应用开发 1. Ollama 部署的本地模型(🔺) Ollama 是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。,这是 Ollama 的官网地址:https://ollama.com/ 以下是其…...
24年10月Google Play政策更新通知
今天gmail邮箱里收到了google play最新的政策更新通知,这次的通知对于我来说,影响不大,邮件内容主要分为三部分。 一、政策更新部分 这里更新的政策只有医疗功能相关的。针对健康和医疗应用增加了最新的医疗指南和免责声明要求,并…...

玄机-应急响应- Linux入侵排查
一、web目录存在木马,请找到木马的密码提交 到web目录进行搜索 find ./ type f -name "*.php" | xargs grep "eval(" 发现有三个可疑文件 1.php看到密码 1 flag{1} 二、服务器疑似存在不死马,请找到不死马的密码提交 被md5加密的…...

数据驱动业务中的BDS对账班牛返款表集成方案
数据驱动业务中的BDS对账班牛返款表集成方案 BDS对账班牛返款表_update:班牛数据集成到MySQL的技术实现 在数据驱动的业务环境中,如何高效、准确地将分散在不同系统中的数据进行整合,是每个企业面临的重要挑战。本文将分享一个具体的技术案例…...

【Kubernetes实战】三、资源组件Namespace、Pod、Label、Deployment、Service概述。
目录 1. Namespace1) namespace作用2) namespace资源的具体操作 2. Pod1) Pod概述2) Pod资源的具体操作 3. Label1) Label概述2) Label资源的具体操作 4. Deployment1) Deployment概述2) Deployment控制器的具体操作 5. Service1) Service概述2) Service资源的具体操作 1. Name…...
去中心化的模型训练
去中心化的模型训练(Decentralized Model Training)是一种不依赖单一中心服务器或数据存储中心,而是在多个节点(如设备或数据拥有者)上进行联合训练的方法。这种训练模式可以更好地保护数据隐私、降低数据传输成本&…...

Arthas调试线上代码技巧
1、Arthas概述 官网地址:https://arthas.aliyun.com/ 下载地址:https://arthas.aliyun.com/arthas-boot.jar 使用教程:https://arthas.aliyun.com/doc/quick-start.html Arthas(阿尔萨斯)是 Alibaba 开源的一款Java诊断…...

QT访问数据库:应用提示Driver not loaded
在QT中运行完全正确错误截图 解决办法1 我用的是MySQL。我把libmysql.dll复制到应用程序的目录下,即可正常访问数据库。 解决办法2 bool open_work_db() {QString info "support drivers:";for (int i0; i<QSqlDatabase::drivers().size(); i){inf…...

支持ANC的头戴式蓝牙耳机,更有小金标认证,QCY H3 Pro体验
平时听音乐、看视频,大家都想获得更悦耳的音质体验,这时候蓝牙耳机就是性价比更高的一种方案,同时因其无线束缚、便携性高的特点,随时拿出来就能用。更不用说如今国产品牌的蓝牙耳机升级迭代速度非常快,百元的价位就可…...

net framework 3.5组件更新失败错误代码0x80072f8f怎样解决
浏览器地址栏输入www.dnz9.com远程解决netframework问题 当遇到.NET Framework 3.5 组件更新失败,错误代码为 0x80072f8f 时,可以尝试以下几种解决方法: 一、检查网络连接和时间设置 网络连接 错误代码 0x80072f8f 通常与网络相关问题有关。首…...

C语言初阶:十一.代码调试技巧
❤欢迎各位大佬访问:折枝寄北-CSDN博客折枝寄北擅长C语言初阶,等方面的知识,折枝寄北关注python,c,java,qt,c语言领域.https://blog.csdn.net/2303_80170533?typeblog❤文章所属专栏https://blog.csdn.net/2303_80170533/category_12794764.html?spm1001.2014.300…...

Jenkins Pipeline 部署总结
Jenkins Pipeline 部署总结 前言 Jenkins Pipeline 是 Jenkins 提供的一套强大的工作流框架,它允许开发者以代码的形式定义整个软件交付过程,从而实现持续集成和持续部署(CI/CD)。通过 Pipeline,原本独立运行于单个或…...
HTTP的初步了解
目录 前言 一、HTTP协议的基本概念 1.1、请求格式 1.2、响应格式 二、HTTP链接问题 前言 提示:这里可以添加本文要记录的大概内容: HTTP协议是超文本传输协议 HTTP的短连接:建立连接——数据传输——关闭连接 HTTP的长连接:…...
SM单元 硬件
在硬件上,SM(Streaming Multiprocessor)指的是流式多处理器单元,它是GPU架构中非常重要的组成部分。SM可以看作是GPU的心脏,类似于CPU核心,负责执行并行计算任务。每个SM包含多个流处理器(cores…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
GB/T 43887-2024 核级柔性石墨板材检测
核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标: 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...
MeanFlow:何凯明新作,单步去噪图像生成新SOTA
1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架,旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念,这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换,显…...

Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集
目录 一、引言:当爬虫遭遇"地域封锁"二、背景解析:分布式爬虫的两大技术挑战1. 传统Scrapy架构的局限性2. 地域限制的三种典型表现 三、架构设计:Scrapy-Redis 代理池的协同机制1. 分布式架构拓扑图2. 核心组件协同流程 四、技术实…...