每种编程语言都会有自己规则的语句,大多都大同小异,今天学习这种最普通的If语句。
前面我们说过,想快速查看帮助文件,可以用鼠标定位到关键字的单词内部,按F1。你可以在VBA编辑器里写上If,然后鼠标定位到I后面,按F1,就可以看到官方的帮助文件了。
我们还是以具体例子来看:
代码语言:javascript复制Sub TestIF()
'一行,Then后面只能是1个语句(可以用“:”连接多个,但不建议)
If Range("A1").Value Mod 2 = 1 Then Range("B1").Value = "奇数"
If Range("A2").Value Mod 2 = 0 Then Range("B2").Value = "偶数"
'这种模式,If和End If之间可以写多行
If Range("A3").Value Mod 2 = 1 Then
Range("B3").Value = "奇数"
End If
If Range("A4").Value Mod 2 = 0 Then
Range("B4").Value = "偶数"
End If
'Else下面代表If语句返回False执行的语句
If Range("A5").Value Mod 2 = 0 Then
Range("B5").Value = "偶数"
Else
Range("B5").Value = "奇数"
End If
End Sub
A1-A5有一些数字,我们通过If语句来判断他的奇偶,举了3种写法的例子。
其中Mod是内置的取余数函数,Range("A1").Value Mod 2的意思就是,对Range("A1").Value也就是7,取2的余数,我们知道结果就是1。
后面跟着的“= 1”的等号,我们在第一个程序里也碰到了:
代码语言:javascript复制Range("A1").Value = "hello Excel VBA"
上面这个“=”,因为左边是单元格的Value属性,而且是简单的单独语句,是一种赋值的意思,就是把后面的字符串赋值给Range("A1").Value。
而现在这里的“Range("A1").Value Mod 2 = 1”因为是跟在If后面的,它是一种判断,也就相当于是“Range("A1").Value Mod 2”得到的值,是否等于1,这2种方式是不一样的。
- 一种是赋值
- 一种是判断是否相等,是一种比较,会返回true或者false的Boolean值
If后面返回true,就是执行Then后面的语句,否则就会执行Else后面的语句,如果没有Else就不会执行(图中的第4个数字5,后面就是没有执行)。
If语句里面还可以嵌套If:
代码语言:javascript复制 If Range("A5").Value Mod 2 = 0 Then
If Range("A5").Value > 5 Then
Range("B5").Value = "大于5的偶数"
Else
Range("B5").Value = "小于5的偶数"
End If
Else
Range("B5").Value = "奇数"
End If
这种嵌套还有其他Else If ... Then等形式,具体可以研究研究官方的帮助文档,别忘记那个F1查看的方法。
延伸一下比较符:
这里的“>",代表的意思就是前面的数字是否大于后面的数字,和上面的”=“一样,也是一种比较符,这样的符号还有:
- < 小于
- >= 大于或者等于
- <= 小于或者等于
- <> 不等于
这些比较符都是前后2个数才能进行的:
代码语言:javascript复制a 比较符号 b
这种模式得到的结果,只能是跟在If后面,或者赋值给其他变量,单独是不能使用的。
这种通过简单的语句的嵌套,可以构建出非常复杂的逻辑关系,只要你的头脑能够理清楚,而电脑适合做的就是这种严格执行语句,无论是多少无聊枯燥的、还是多么烧脑的逻辑,对电脑来说都一样。
小结
If语句是编程语言非常基础、也是非常必要的一种(好像没有什么语言没有这个吧),写程序会大量使用到这个,而且这个用起来应该来说还是比较简单的。