WPS JS宏教程文檔,0基礎入門,超詳細~


原文鏈接:https://mp.weixin.qq.com/s/WkhVp_SlDOLwCF8R2Vnvtw

WPS JS代碼的運行效果

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. 步驟1:定義i的初始值
  2. 步驟2:判斷i的值是否符合條件,如果符合條件,執行步驟3;如果不符合條件,則結束。
  3. 步驟3:每次要執行的內容1,如一些代碼程序
  4. 步驟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、2
    • arr[1].length獲取2班的人數,有2個學生,分別是3、4
    • arr[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表格操作的代碼
image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM