程序代码的强大之处在于能够利用电脑运算速度快的特点,通过跳转实现选择和循环的控制结构,从而让程序具有智能、且能按预定的条件让电脑能不知疲倦地工作。
在程序中要经常进行各种选择或判断,且通过条件判断后根据不同的情况选择执行不同的代码块。
VBA有四种语句可以实现条件选择或判断的功能:if、select结构、iif和choose函数;各有其优势及应用的特定场合,而if结构则是可以完全实现或替代另外其它三种结构或函数的。
1 单条件判断之If与Select Case
Sub IF_Then语句()
'如果A1的值在36到37.5之间
If Range("a1").Value >= 36 And Range("a1").Value <= 17.5 Then
MsgBox "正常" '提示正常
Else '否则
MsgBox "异常" '提示异常
End If
End Sub
Sub Select_Case语句()
Select Case Range("a1").Value '以A1的值作为判断条件
Case Is < 36, Is > 37.5 '如果小于36,或者大于37.5
MsgBox "异常" '提示异常
Case Else '否则
MsgBox "正常" '提示正常
End Select
End Sub
2 多条件判断之If与Select Case
Sub 多条件之IF_Then()
If Sheet2.Range("a1").Value < 60 Then '如果Sheet2工作表的A1单元格小于60
Sheet2.Range("b1").Value = "不及格" '那么在B1显示不及格
ElseIf Sheet2.Range("a1").Value < 80 Then '如果Sheet2工作表的A1单元格小于80
Sheet2.Range("b1").Value = "及格" '那么在B1显示及格
ElseIf Sheet2.Range("a1").Value < 90 Then '如果Sheet2工作表的A1单元格小于90
Sheet2.Range("b1").Value = "良" '那么在B1显示良
ElseIf Sheet2.Range("a1").Value < 100 Then '如果Sheet2工作表的A1单元格小100
Sheet2.Range("b1").Value = "优" '那么在B1显示优
ElseIf Sheet2.Range("a1").Value = 100 Then '如果Sheet2工作表的A1单元格小1060
Sheet2.Range("b1").Value = "满分" '那么在B1显示满分
End If
End Sub
Sub 多条件之Select_Case()
Select Case Sheet2.Range("a1").Value '以Sheet2工作表的A1单元格作为判断条件
Case Is < 60 '如果小于60
Sheet2.Range("b1").Value = "不及格" '以Sheet2工作表的A1单元格作为判断条件
Case Is < 80 '如果小于80
Sheet2.Range("b1").Value = "及格" '以Sheet2工作表的A1单元格作为判断条件
Case Is < 90 '如果小于90
Sheet2.Range("b1").Value = "良" '以Sheet2工作表的A1单元格作为判断条件
Case Is < 100 '如果小于100
Sheet2.Range("b1").Value = "优" '以Sheet2工作表的A1单元格作为判断条件
Case 100 '如果等于100
Sheet2.Range("b1").Value = "满分" '以Sheet2工作表的A1单元格作为判断条件
End Select
End Sub
在许多情况下,如果仅需要检验与单个自变量有关的可能范围,对于这种情况的判断选择,使用Select Case能更加简化条件表达式,让代码显得更直观和简洁。
3 IIF函数
Sub Excel版本号()
Dim Ver As String '声明变量,用于表示版本号
'获取Excel的版本号,并将它赋值给变量。Excel的开发代号采用11.0、12.0这种编号方式,所以再用IIF函数转换成Excel 2003这种形式的版本号
Ver = Application.Version
'通过IIF函数转换开发代号为符合大众阅读习惯的版本号
MsgBox IIf(Ver = "11.0", "Excel 2003", IIf(Ver = "12.0", "Excel 2007", IIf(Ver = "14.0", "Excel 2010", IIf(Ver = "15.0", "Excel 2013", "您的OFFICE版本比较古老"))))
End Sub
'代码思路分析:
'Application.Version代表Excel的版本号,通常是11.0、12.0、14.0等等编码方式
'11.0对应Excel 2003,12.0对应用Excel 2007,14.0对应Excel 2010,15.0对应Excel 2013
'当取出Excel的版本后,IIF函数可以根据该值返回对应的Excel的年号版本
4 Choose 函数
Sub 打开搜索引擎()
'设置一个标签
Star:
'弹出一个输入框,并将用户输入的值赋值给变量Url
URL = Application.InputBox("输入1:百度" + Chr(10) + "输入2:谷歌" + Chr(10) + "输入3:搜狗" + Chr(10) + "输入4:必应", "打开搜索引擎", 2, , , , , 1)
'如果变量的值小于1或者大于4
If URL < 1 Or URL > 4 Then
MsgBox "允许范围是1到4" '提示用户超出允许范围,
GoTo Star '然后跳转到标签处继续执行(只要输入非法值就继续执行,直到符合要求为止)
Else '否则
'调用explorer.exe对象,打开指定网站。要注意网址是explorer.exe的参数,所以它们之间有一个空格
Shell "explorer.exe " & Choose(URL, "http://www.xxx.com/", "http://www.xxx2.com.hk/", "http://www.xxx3.com/", "http://cn.xx.com/"), vbMaximizedFocus
End If
End Sub
'代码思路分析:
'首先设置一个标签,当用户录入数值错误时可以返回此标签处继续执行,
'当然要实现同样的功能也可以改用循环语句。当学会了下一节的循环语句后,读者可以练习一下改用循环语句实现同等功能。
'然后通过Application.InputBox方法创建一个输入框,让用户输入数值,从而根据数值决定打开哪一个网址。
'接着要判断用户录入的数值是否属于1、2、3、4几个值中的一个,如果不是那么返回标签处继续执行,等待用户重新录入数值。