WPS JS宏——For语句

2022-12-01 11:35:32 浏览数 (1)

代码语言:javascript复制
操作系统:Linux version 4.4.131.D001.64.190906 (YHKYLIN-OS@Kylin)
WPS版本:WPS Office 2019 WPS表格(11.8.2.10533)

一个简单的for循环语句:

代码语言:javascript复制
function testFor() { 
 for (let i=1; i<20; i  ) {
  Range("C"   i).Value2 =i
 }
}

语法上和VBA差异挺大的,里面有let关键字,这个其实和VBA倒是差不多,在VBA里我们一般这么用:

代码语言:javascript复制
    Dim i As Long
    
    i = 100

VBA里在对象的赋值上,是一定要set关键字的,但值类型是可以省略let关键字的。

就这个简单的for循环语句,差点把我整放弃了!

这个语句上面只循环了20次,那是因为我尝试把数字改到50的时候,WPS竟然卡死了!

循环20次的情况下,我尝试多运行了几次,竟然也卡死了!

查看进程,发现进程的等待频道字段标识的是futex_wait_queue_me,baidu了一下,发现这个是Linux内核函数,那是完全的不懂啊!

后来把这个语句单独放到一个新文件里又正常了,然后回到原来的那个文件,删除了一些Sheet和单元格内容后,也正常了,再怎么测试也没复现bug!!

和VBA一样,for语句也有一种for...in的用法:

代码语言:javascript复制
function testForIn() {
 var arr = new Array(3)
 for (let i = 0; i < 10; i  ) {
  arr[i] = "arr"   i
 }
 arr[10] = "arr10"

 for (x in arr) {
  Debug.Print(arr[x])
 }
}

但这里的x in arr和VBA是不一样的,在VBA里,这里的x是arr数组中当前遍历值的一个拷贝,而JS里x是arr的下标!

vba

0 人点赞