四时宝库

程序员的知识宝库

VBA简单入门07:if判断(vba if判断)


VBA提供了 if 和select case两种主要的判断结构,用于判断并执行可供选择的处理过程。

其中if语句更为灵活,select case在判断单个变量时更好。

if语句有三种形式:iif函数、单行的if语句、if结构。


1、iif函数:和Excel的工作表函数if相似。

  1. Sub a()

  2. x = Application.InputBox(prompt:="请输入一个数值", Type:=1)

  3. y = IIf(x > 0, "大于0", "小于等于0")

  4. MsgBox y

  5. End Sub

执行结果为:

输入数值

判断结果


2、一行的if.....then......else......语句 。上面的iif函数可以改写为:

  1. Sub ca()

  2. x = Application.InputBox(prompt:="请输入一个数值", Type:=1)

  3. If x > 0 Then MsgBox "大于0" Else MsgBox "小于等于0" 'Else部分可忽略

  4. End Sub

iif函数与if语句的区别是,在单行的if语句中,Else部分是可选的,而iif函数的第三参数必须被定义。


3、如果需要判断(条件成立)后执行多个操作处理,可以使用if结构。

  1. Sub vvvvv()

  2. x = Application.InputBox(prompt:="请输入一个数值", Type:=1)

  3. y = 0

  4. If x > 0 Then '如果大于0则执行下面操作,否则不处理

  5. x = x + 10 '操作1

  6. y = x * 1000 + x '操作2

  7. End If

  8. End Sub

注意的是:每个完整的if结构,都是if开头end if结尾。在书写代码的时候,建议先写好完整的if结构,然后在if结构里面写各个处理过程。

如果不同的条件有不同的处理过程,可以使用Else。

  1. Sub vvvvv()

  2. x = Application.InputBox(prompt:="请输入一个数值", Type:=1)

  3. y = 0

  4. If x > 0 Then '如果大于0

  5. x = x + 10 '操作1

  6. y = x * 1000 + x '操作2

  7. Else '否则(如果小于等于0)

  8. x = x - 10

  9. y = x * 1000 - x

  10. End If

  11. End Sub

如果if判断的条件更多,可以使用Elseif......Then。

  1. Sub vvvvv()

  2. x = Application.InputBox(prompt:="请输入一个数值", Type:=1)

  3. y = 0

  4. If x > 0 Then '如果大于0

  5. x = x + 10 '操作1

  6. y = x * 1000 + x '操作2

  7. ElseIf x < 0 Then '如果小于0(注意这里有Then)

  8. x = x - 10

  9. y = x * 1000 - x

  10. Else '如果等于0

  11. x = 10086

  12. y = 10086

  13. End If

  14. End Sub

if结构里的操作可以有多个,Elseif同样可以有多个,视乎实际判断的条件而定。


4、if结构的嵌套

If Not ThisWorkbook.Saved Then

l = MsgBox("您想保存变化吗?", vbQuestion + vbYesNo)

'第二层if结构

If l = vbYes Then

ThisWorkbook.Save

MsgBox ThisWorkbook.Name & "已保存"

End If

'第二层if结构

End If

上面代码,有两个 if 结构,字体加粗部分为第二层 if。

第一层if(外层),利用工作簿的Saved属性检查工作簿作出改变后是否保存过。

如果没有保存,在第二个if(内层)里面供用户选择是否保存,如果答案为“是”,则保存工作簿。


5、And、Or、Not在if语句中的应用

And、Or、Not三种逻辑运算常常配合if使用。

If score >= 60 And score < 80 Then MsgBox "及格"

上面的变量score需同时满足两个条件要求才会执行Then后面的操作。

If 部门 = "财务" Or 部门 = "人事" Then MsgBox "执行操作"

上面语句,部门只要是财务或人事,都执行Then后面的操作。

If Not numeric(x) Then MsgBox "执行操作"

上面语句,如果x变量不是数值,则执行Then后面的操作。


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接