分享

笨方法学VBA:基本语句

 L罗乐 2019-09-13

本文转载自公众号:四零三工作室,原创作者:怪盗福尔摩斯,本文著作权归原创作者所有,本人收藏此文仅作为学习之用,不作其他目的,如有侵权,请联系我删除。

正常来说,满足有变量,有运算和有控制就算是一门编程语言了。前面我们已经跟大家讲了变量与运算,今天就跟大家讲一下最后的控制吧。控制是由语句构成的,下面就结合实际案例来跟大家讲一下VBA的基本语句。

1.  If…Then…Else语句

If…Then…Else语句其实和EXCEL的if函数作用是一样的,如果符合条件就执行语句,否则执行另一语句,举例如下:

执行结果如下:

2.  ElseIf

ElseIf是针对更多判断使用的,举例如下:

执行结果:

3.  Select Case语句

前面讲的If语句虽然可以解决多次判断的问题,但是当面对三次或者更多策略中做出选择时,使用Select Case语句更加合适,下面以一个案例来给大家进行讲解。

你的老板让你做单位的职工考核得分表:

你要根据下面的考核得分给职工评定星级:

(公众号后台回复“员工数据”可以得到表格)

用Select Case语句可以这样实现:

Select Case后面跟的是测试表达式,它是程序要进行判断和比较的值;Case后面跟的是表达式列表,是用来和测试表达式进行比较的值,可以是To或Is的关键字,也可以是用英文逗号隔开的表达式列表。如果测试表达式是整数,Case 1 To 3和Case 1,2,3是等效的。Case Else子句是可选语句,如果找不到与测试表达式匹配的值,就执行该子句。

写完这个宏之后,你发现却无法用于现实中,因为数据表中的员工太多了,不可能遇见一个员工修改并执行一次代码吧,所以我们引入循环语句来解决这个问题。

4.  For…Next语句

写For循环的时候,要先定义循环变量(代码中的i)的值,给它一个初值和终值,也就是2 To 19,步长的话必须为整数,如果为1可以省略,不为1要写上,步长也可以是负整数,当是负整数的时候,循环变量的初值必须大于终值。最后的Next i,执行一次,i的值会加上步长值继续执行,比如上面的代码第一次i为1,第二次为2,一直到20(大于循环体终值19)就会跳出循环体。

5.  While…Wend语句

与For循环语句功能相同的语句还有While…Wend语句。用它解决上面的问题的代码如下:

执行情况与For语句类似,我就不再阐述了,大家自行试着写写体会一下。

但是,代码实际投入使用之后,又遇到了一个新的问题,每个月职工可能会发生变化,并不能确定确切的数字,那怎么办才能做到随数据变化而变化呢?这时候就得用到Do While语句了。

6.   Do While语句

用Do While语句解决上面的问题,代码如下:

Do While语句后为逻辑表达式,它的循环条件是当逻辑表达式的值为真时,执行循环体(Do和Loop之间的语句),否则执行Loop后的语句。Loop标志语句结束,返回Do语句处,再次判断循环条件。如果想在Loop后写逻辑表达式,可以这样做(以上面例子为例):

需要注意的是,Do While语句是当逻辑表达式为假的时候退出循环,但结尾判断式的语句是在执行一次循环体之后再判断循环条件,因此,当循环条件一开始就是假的时候,比开头判断式要对执行一次循环体,其他时候执行次数相同。

7.  Do Until语句

与Do While相反的语句,While是逻辑判断式为假退出循环,Until是逻辑判断是为真退出循环,其他都是一样的。大家尝试着用Do Until语句解决上面的问题吧。

8.  For Each…Next语句

这条语句是用于以数组或者集合作为循环条件的循环体使用的,使用起来类似于For循环,用实际案例说明形象一点,比如你想将1到100的自然数写到A1:A100单元格区域,用For Each…Next语句可以这样做:

For Each…Next语句不需要定义循环条件,只需要定义变量,变量的类型与集合类型相同。(数组的话则为Variant)需要注意的是,当在一个数组里循环的时候,不能对数组元素进行赋值或重新赋值,对于已经赋值的对象数组也只能修改数组元素。

9.  With语句

With语句是用于简化代码用的,举例如下:

这是一段代码,你会发现其中你将Worksheets('Sheet1').Range('A1')写了很多遍,这会大大降低你的效率,如果你不想多次输入重复的代码,就可以使用with优化:

合理使用with语句,不但可以减少代码的输入量,还可以提高程序的执行效率,所以建议大家经常使用。

以上便是VBA的基本语句,大家私下需要多多练习,只有熟悉掌握基本语句,才可以在后面写出优雅的代码,让程序的执行更加有效率。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多