前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WPS JS宏——For语句

WPS JS宏——For语句

作者头像
xyj
发布2022-12-01 11:35:32
3.2K0
发布2022-12-01 11:35:32
举报
文章被收录于专栏:VBA 学习
代码语言: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的下标!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 VBA 学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档