打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
当WPS开始支持JS语言,微软Excel又该何去何从?



每天一篇Excel技术图文
微信公众号:Excel星球

NO.1060-JS宏和VBA宏
作者:看见星光
 微博:EXCELers / 知识星球:Excel

HI,大家好,我是星光。

前段时间看到一个很有趣的事情,WPS居然支持JS


微软那家伙整天咋咋呼呼,一会说Excel支持R,一会说支持Python,一会说支持JS……结果啥都不支持;WPS一声不响,突然就支持JS了。就想问下微软大胸弟,你惊不惊喜意不意外?

今年微软还要推出Office 2021版,但目前还没看到脚本语言有啥改变;现在WPS开了第一枪,这就更有趣了。微软是跟JS呢?还是支持Python呢?还是一咬牙两个都支持呢?


——反正咱们用个表格是越发不容易了,VB、SQL、JS、Python都来一腿,听说永中还支持Java……摊手,难怪前段时间外国佬一本正经的说用好Excel的都是程序员ε=(´ο`*)))唉。


当然,更懵的是,咱们家的大傻瓜VBA何去何从呢?


不要慌,奶一口先。虽然VBA已经坐上被淘汰的雪国餐车,但短期内,至少5年左右吧,VBA还可以继续生存,甚至活跃

这么说主要有两个原因。一个是Excel 2019版至少可以再活5年吧?君不见很多朋友还在使用14年前的Excel 2007版。

而另外一个原因是,虽然WPS支持JS,但同时也没有放弃VBA,这就存在一个过渡期。而对Excel来说,即便它新出的版本既支持JS也支持Python,但早期的版本已经固化了,就啥也支持不了——这么看,短期内,还是VBA更有适用性不是?

打个响指,说了这么多,是应该给大家介绍一下几个很重要的问题了。

什么是JS?

关于WPS.JS有没有一些实际案例?

JS宏和VBA有哪些不同之处



1 丨 
什么是JS


JS是Java Script的简称,是一门高端的动态的弱类型的高效而通用的编程语言。它本身是面对Web的但由于现代的Web浏览器,不论是电脑、能手机、甚至游戏机,都包含了Java Script解释器,这就使JS成为了史上使用最广泛的编程语言之一

事实上,咱们所熟悉的VBA和M语言,均可以调用一部分JS功能,比如VBA调取JS处理网页数据,M语言通过网页函数调用JS的正则表达式等。


2丨 
实际案例

举几个JS宏的实际例子吧。

1,使用JS实现条件语句

JS的条件语句和VBA相似,也是if和else结构。但需要意的是,当if判断结果存在多条语句时,需要使用花括号{}包起来,形成一条语句。


2,使用JS实现循环语句

在VBA教程里咱们讲过,VBA循环语句有3种常见形式,for...to计数循环、for...ecah集合循环和while条件循环。实现这三种循环形式的JS代码如下:


3,JS中的数组

众所周知,数组是编程中最重要的数据结构。尽管如此,由于VBA太古老了,数组基本就是最原始的状态,所以数组的各种常用方法都——一个都没有!

而JS的数组呢?方法有几十个,比如常用的数组串联(join),增删(splice),排序(sort),筛选(filter),判断(some/every),查找(find),合并(concat),填充(fill),扁平化(flat)以及map、forEach等等。

除此之外,JS的数组也比VBA灵活许多,不但大小动态,支持一次添加多个元素,而且添加的位置也很自由,可以轻松实现队列、栈等数据结构。

举一段简单代码(需要注意JS的数组是以中括号[]形式包裹起来的有序元素集合)。


4,JS中的对象

数组+字典是VBA数据处理的最佳组合方案,在JS宏中也是如此。JS也有类似字典的数据结构,只是它不叫字典,叫……对象。

▲谁还没个对象不是?

对象在JS中是使用花括号{}包括起来的数据内容,是键值对结构:

{key1:value1,key2:value2,...}

和字典类似。key作为键名是对象的属性,value是键名对应的值。键名可以使用数值和字符串来表示。健值可以是任意类型。通常键名和值之间使用冒号分隔。例如,定义一个对象obj。示例代码如下:

JS对象同样具有查改增删等方法,相关示例代码如下:



3 丨 
JS宏和VBA的异同


从外观上来看,JS宏的IDE和VBA长的差不多,也是由工程资源管理器、属性窗口、本地窗口等部位组成,编写方式也和VBA相类似。


两者主要是语法不同。

聊几点主要的不同之处。

1,过程结构

VBA用Sub...End Sub关键字来定义过程,而JS用function{}关键字来定义函数,不存在Sub过程。

2,注释问题

VBA注释使用单引号标识,JS的单行注释使用//,多行注释使用/*和*/


3,变量问题

VBA声明变量,需要使用Dim关键字,JS使用var或者let关键字。VBA变量声明有数据类型,JS作为弱类型的编程语言,不需要声明变量类型。另外,JS解释器有自己的内存管理机制,可以自动对内存进行垃圾回收,当不再有任何引用指向一个对象时,解释器就会自动回收它所占用的内存资源,这个比VBA的内存管理更加稳定高效。

此外,JS支持在1行语句中对多个变量进行赋值。见下图第3行代码。


4,语句问题

首先,JS严格区分字母大小写,其次,它使用分号(;)将语句分隔。语句如果各自独占一行,语句间的分号通常可以省略——但作为初学者,还是建议大家养成使用分号的习惯。最后,当将多条语句联合在一起,形成一条复合语句时,需要使用花括号{}将多条语句括起来。

5,对象、方法和属性问题

VBA可以直接使用集合索引的方式引用对象,比如引用第1个工作表:

Worksheets(1).Select

JS需要增加一个Item属性,还是引用第1个工作表,语句如下:

Worksheets.Item(1).Select()

比较以上两条语句,你还会发现一点不同。在VBA中,方法不需要加(),而JS必须加括号,比如Select()

除此之外,在VBA中,单元格对象默认读取Value属性,JS没有这个默认属性,而且它使用的关键字也不是Value,而是Value2

6,运算符问题

这个不一样的地方有点儿多。

在VBA中判断两个值是否相等,使用运算符(=),或者不等于(<>),而JS表示等号判断的运算符是(==),不等于的运算符是(!=)

VBA的逻辑与是And,逻辑或是Or,逻辑非是Not。JS的辑与是&&,逻辑或是||,逻辑非是!。

VBA的文本连接符是&或+,JS不支持&,只支持+;此时要求合并的数据必须有一个是字符串,否则+就是加法运算了。

……

没了,以后想到啥就再补吧。虽然WPS的JS宏依然有很多不方便之处,比如诡异的单元格区域和JS数组之间的读写转换问题,但无论如何它都走出了自己的一步,不再处处追求兼容Excel,这才是走在成为国产之光的正确道路上对不对?只有和别人不一样,才能发出光芒,不然顶多算个漂亮的影子。

OK,今天和大家分享的内容就这些。我是星光,左上角点关注,右下角点个赞,更多表格精彩内容可以点击菜单→资源福利、免费教程等。挥挥手,明天再见。

上千篇原创教程
随学随用 随用随学👆

👇👇👇

超低价Excel终身会员:一次付费
永久迭代学习,学习问题永久答疑

👀

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
什么是WPS.JS宏?
WPS中的可以使用JS宏了!尝尝鲜-数组(上篇)
Excel VBA教程
VBA操作要点
3、WPS JS循环语句之for in
VBA语法基础(上)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服