本文转载自公众号:四零三工作室,原创作者:怪盗福尔摩斯,本文著作权归原创作者所有,本人收藏此文仅作为学习之用,不作其他目的,如有侵权,请联系我删除。 正常来说,满足有变量,有运算和有控制就算是一门编程语言了。前面我们已经跟大家讲了变量与运算,今天就跟大家讲一下最后的控制吧。控制是由语句构成的,下面就结合实际案例来跟大家讲一下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的基本语句,大家私下需要多多练习,只有熟悉掌握基本语句,才可以在后面写出优雅的代码,让程序的执行更加有效率。 |
|
来自: L罗乐 > 《VBA基础入门教程》