原文鏈接:https://mp.weixin.qq.com/s/WkhVp_SlDOLwCF8R2Vnvtw
WPS JS代碼的運行效果
01 JS宏設置
- 點擊左上角【文件】-倒數第2個,點擊【選項】-勾選【默認JS開發環境】
- 方法一:選擇【開發工具】-【WPS宏編輯器】
方法二:按住Alt+F11
點擊下方鏈接,后台回復“WPS JS”獲取更多JS教程、JS交流群
【WPS JS教程】時間戳轉換時間
02函數
- WPS JS每條語句后面可以有“;”,也可以沒有“;”,程序都可以運行。
- 函數名可以用中文命名。
- 按F5默認會執行最后一個函數,如下代碼就會輸出MrFlySand-小知識酷。
alert()
就是窗口輸出,如:alert("小知識酷")
console.log()
就是控制台輸出,如:console.log("小知識酷")
Debug.Print()
- 注意:在代碼中所有標點符號在要英文狀態下輸入。
function 輸出2(){
alert("MrFlySand-小知識酷-520")
}
function 輸出(){
alert("MrFlySand-小知識酷")
}
03單元格
3.1讀取單元格/輸出單元格
3.1.1選擇工作表
Sheets.Item()
是選中工作表,excel默認的第一個工作表名稱也是Sheet1。Sheets.Item(2)
是選中第2個工作表。圓括號()
里面可以是數字如果里面是一個數字n,表示它是第n個表。Sheets.Item("小知識酷的成績")
是選中的是“小知識酷的成績”工作表,注意:中文小知識酷的成績
要在英文雙引號""
里面。
3.1.2選擇單元格
Range()
選擇單元格- Value2意思就是值或元素
- WPS JS可以使用運算符“+”,
"A"+2
就是A2。注意:"A"&2
是錯誤的語法
function 讀取單元格(){
// 輸出第1個工作表的A1單元格的值
alert(Sheets.Item(1).Range("A1").Value2)
// 輸出工作表名為Sheet2的A2單元格的值
alert(Sheets.Item("Sheet2").Range("A"+2).Value2)
}
3.2運用庫函數和給單元格賦值
Date()
是獲取當前時間的函數Sheets.Item(1).Range("A1").Value2 = Date()
意思是:第1個的工作表中A1 = 現在的日期
function Fun(){
Sheets.Item(1).Range("A1").Value2 = Date();
alert(Sheets.Item(1).Range("A1").Value2);
}
3.3設置單元格的顏色和背景
function MyFun(){
//選中B4單元格
Range("B4").Select();
//圓括號里面就是選擇B4單元格的文字
(obj=>{
//改變這個字體的顏色
obj.Color = 2;
})(Selection.Font);
//圓括號里面就是選擇B4單元格的內部背景
(obj=>{
//改變這個背景的顏色
obj.Color = 65536;
})(Selection.Interior);
}
3.4 合並單元格
如下代碼合並D1:D2
單元格
Range("D1:D2").Select();
(obj=>{
obj.Merge(false);
obj.HorizontalAlignment = xlHAlignCenter;
})(Selection);
04 新建工作表
function 新建工作表(){
var sht=Worksheets.Add(null,Sheets(Sheets.Count));
sht.Name="mrflysand的數據分析表"; //工作表的名稱
}
05 if判斷
- 如果第1個工作表的A1單元格的值是1,輸出“1”和“有1或2”;如果第1個工作表的A1單元格的值不是
1或2,輸出“沒有1和2”。 - 其中
||
表示或
function 讀取單元格(){
// 輸出第1個工作表的A1單元格的值
alert(Sheets.Item(1).Range("A1").Value2)
// 判斷語句
if(Sheets.Item(1).Range("A1").Value2==1 || Sheets.Item(1).Range("A1").Value2==2){
alert("有1或2")
}else{
alert("沒有1和2")
}
}
06 switch語句
因為a的值是1,所以匹配case 1,輸出A;如果a=3,則輸出C;如果a=其他值,輸出none
function Desfee(){
var a = 1;
switch (a){
case 1:
alert("A")// 當表達式的結果等於 1 時,則執行該代碼
break;
case 3:
alert("C")// 當表達式的結果等於 3 時,則執行該代碼
break;
default :
alert("none") // 如果沒有與表達式相同的值,則執行該代碼
}
alert(Desfee)
}
07 輸入框
7.1單個值
InputBox
就是輸入函數,雙引號里面的內容表示提示語
function 輸入(){
var num = InputBox("請輸入一個數");
alert(num)
}
7.2五個參數
1、提示的內容
2、提示框的標題
3、輸入框的默認值
4、輸入框橫縱坐標軸的位置
function 輸入(){
var num = InputBox("請輸入名稱","提示框","小知識酷",200,200)
alert(num)
}
7.3MsgBox提醒框
當你點擊“是”時,num=6,所以輸出“恭喜你關注了”;
當你點擊“否”時,num=7,所以輸出“快去搜索【小知識酷】關注吧”。
function 輸入(){
var num = MsgBox("你關注了【小知識酷】嗎?",jsYesNo,"提示框")
if(num == 6){
alert("恭喜你關注了")
}else{
alert("快去搜索【小知識酷】關注吧");
}
}
08循環
8.1 實例一
for(步驟1; 步驟2; 步驟4){步驟3}
,for循環的執行步驟:
- 步驟1:定義i的初始值
- 步驟2:判斷i的值是否符合條件,如果符合條件,執行步驟3;如果不符合條件,則結束。
- 步驟3:每次要執行的內容1,如一些代碼程序
- 步驟4:每次要執行的內容2,一般情況下是自增
function Loop(){
for(var i=1; i<=5; i++){
alert(i)
}
}
運行結果:
1 2 3 4 5
8.2 實例二
function LoopArr(){
var arr = ["mrflysand","小知識酷","關注不迷路"]
for(var i=0; i<=2; i++){
Sheets.Item(1).Range("A"+(i+1)).Value2 = arr[i]
}
}
運行結果
代碼解釋說明
i=0時,"A"+(i+1)=A1,Range("A1"),arr[0]=""
i=1時,"A"+(i+1)=A2,Range("A2"),arr[1]="小知識酷"
i=2時,"A"+(i+1)=A3,Range("A3"),arr[2]="關注不迷路",循環就會停止。
09數組
Resize(row,list)
選中多個單元格,相當於一個二維數組。Resize(1,5)
表示1行5列的一維數組;Resize(2,5)
表示2行5列的二維數組;Resize(5,5)
表示5行5列的二維數組。- row:選中多少行
- list:選中多少列
array.length
:數組的長度- array:數組名
- length:長度,數組里面元素個數
function 一維數組(){
// 一維數組的定義
arr=["MrFlySand","小知識酷",'QQ',2602629646];
alert("數組里面元素個數:"+arr.length )
// 只在在A1單元格寫入MrFlySand
// 只是把第一個元素放在單元格中
Sheets.Item(1).Range("A1").Value2 = arr;
// 只在在A6單元格寫入MrFlySand
// Resize(1,1):第一個1表示只顯示1行;第2個1表示數組中第1個元素
Sheets.Item(1).Range("A6").Resize(1,1).Value2 = arr;
// 在A11:C11單元格寫入"MrFlySand","小知識酷",'QQ'
// Resize(1,4):1表示只顯示1行;3表示數組中前第3個元素
Sheets.Item(1).Range("A11").Resize(1,3).Value2 = arr;
// 在A16:D18單元格寫入"MrFlySand","小知識酷",'QQ',2602629646
// Resize(3,arr.length):3表示顯示3行;arr.length表示數組中元素的個數,及長度為4
// 選中的格子讀入的數據是一個一維數組
Sheets.Item(1).Range("A16").Resize(3,arr.length).Value2 = arr;
}
10.1一維數組的輸出
function arr(){
let arr= ["MrFlySand","小知識酷",'QQ',2602629646];
Sheets.Item(1).Range("A1").Resize(1,arr.length).Value2 = arr;
}
輸出內容
10.2一維數組的遍歷
function Fun(){
// 定義數組
const arr = new Set(["MrFlySand","小知識酷",'QQ',2602629646]);
//i表示值,arr表示在這個數組中遍歷
for (let i of arr) {
Console.log(i);
}
}
function Fun1(){
let arr= ["MrFlySand","小知識酷",'QQ',2602629646];
// 定義數組
//n表示值,arr表示在這個數組中遍歷
for(let n of arr){
Console.log(n)
}
}
10.3二維數組的輸出
- 輸出下方的表格
代碼說明:
- 在WpsJs中數組的下標是從0開始的
- 二維數組的定義格式:
函數名=[["1","2"],["3","4"],["5","6","7"]]
就比如在1個數組(1個年級)中有3個數組(3個班),且這3個數組(3個班)中有2個不同的學生。arr.length
獲取1個數組(1個年級)中有幾個數組(n個班)arr[0].length
獲取1班的人數,有2個學生,分別是1、2arr[1].length
獲取2班的人數,有2個學生,分別是3、4arr[2].length
獲取3班的人數,有3個學生,分別是5、6、7
function 二維數組(){
// 二維數組的定義
arr=[["MrFlySand","小知識酷",'QQ',2602629646],[2602629646,'QQ',"小知識酷","MrFlySand"]];
// 輸出二維數組的行數和列數
alert("行數:" + arr.length + ",列數:"+arr[0].length)
// 輸出二維數組的2行3列的值/輸出第2個學生的英文名
alert("2行3列的值:" + arr[1][3]);
// 輸出二維數組的1行/輸出第1個學生的所有個人信息
Sheets.Item(1).Range("A1").Resize(1,arr[0].length).Value2 = arr[0]
// 輸出二維數組的2行/輸出第2個學生的所有個人信息
Sheets.Item(1).Range("A2").Resize(1,arr[0].length).Value2 = arr[1]
}
10.4數組輸出行和輸出列
arr1
是一個一維數組,輸出顯示的是一橫排。arr2
是一個二維數組,輸出顯示的是一豎排。
function arr(){
let arr= ["MrFlySand","小知識酷",'QQ',2602629646];
Sheets.Item(1).Range("A1").Resize(1,arr.length).Value2 = arr;
let arr1= ["MrFlySand","小知識酷",'QQ',2602629646];
Sheets.Item(1).Range("A3").Resize(4,4).Value2 = arr1;
let arr2 = [["MrFlySand"],["小知識酷"],['QQ'],[2602629646]];
Sheets.Item(1).Range("A8").Resize(4,1).Value2 = arr2;
}
以上代碼輸出內容
10.5使用循環輸出列
function arr2(){
let arr= ["MrFlySand","小知識酷",'QQ',2602629646];
for(var i=1,j=0; j<=arr.length; i++,j++){
Sheets.Item(1).Range("A"+i).Value2 = arr[j];
}
}
11類的使用
// 聲明類
class Arms{
// 構造函數,給屬性傳值
constructor(name, attack) {
this.name = name;
this.attack = attack;
}
//返回當前裝備的屬性值
toString() {
return '名稱:' + this.name + ', 攻擊力:' + this.attack + '';
}
}
function 類(){
//定義類
let arr=new Arms("AK47-MrFlySand",88)
// 輸出類
alert(arr.toString())
Sheets.Item(1).Range("A1").Value2 = arr.toString();
}
12錄制宏
點擊【開發工具】-【錄制新宏】-【查看代碼】可以查看excel表格操作的代碼