VBA 选择
程序三大基础结构:顺序结构、选择结构、循环结构。
顺序结构:多条语句会依次执行。
选择结构:根据条件判断,条件成立则执行相应语句,条件不成立则不执行相应语句。
循环结构:根据循环条件判断,循环条件成立,则执行循环体中的内容,循环条件不成立,则结束循环的执行。
程序三大基础结构,构成了程序代码的运行逻辑。
VBA选择结构包括四类结构:if、if else、if else if、select case。
1 if语句
语法
If 条件 Then 语句
条件成立,则执行相应语句;否则不执行。然后继续之后的语句。
示例
根据用户输入的成绩,判断是否及格:如果大于60显示及格,否则不做显示。
Sub if1()
Dim score As Integer
score = InputBox("请输入分数:", "小步教程")
If score >= 60 Then Debug.Print "及格"
Debug.Print "程序继续执行"
End Sub
运行结果:
当输入分数100时,输出结果:
及格
程序继续执行
当输入分数0时,输出结果
程序继续执行
执行多条语句
如果条件成立时需要执行多行语句,需加end ,结构如下:
If 条件 Then
语句1
…
语句n
End If
示例如下。如果大于60显示两句:第1句"及格",第2句"加油"。
Sub if2()
Dim score As Integer
score = InputBox("请输入分数:", "小步教程")
If score >= 60 Then
Debug.Print "及格"
Debug.Print "加油"
End If
Debug.Print "程序继续执行"
End Sub
运行结果:
1)输入100分,输出结果:
及格
加油
程序继续执行
2)输入分数0分,输出结果:
程序继续执行
2 if else语句
语法
If 条件 Then
语句块1
Else
语句块2
End if
条件成立,则执行语句块1中的内容;否则执行语句块2的内容。然后继续之后的语句。
示例
根据用户输入的成绩,判断是否及格:如果大于60显示及格,加油;否则显示:不及格,大大加油。
Sub if3()
Dim score As Integer
score = InputBox("请输入分数:", "小步教程")
If score >= 60 Then
Debug.Print "及格"
Debug.Print "加油"
Else
Debug.Print "不及格"
Debug.Print "大大加油"
End If
Debug.Print "程序继续执行"
End Sub
显示结果:
1)输入100分,输出结果:
及格
加油
程序继续执行
2)输入分数0分,输出结果:
不及格
大大加油
程序继续执行
3 if elseif语句
语法
If 条件1 Then
语句块1
ElseIf 条件2 Then
语句块2
…
Else
语句块n
End if
如果条件1成立,则执行语句块1中的内容;
继续判断条件2,如果条件2成立,执行语句块2的内容;
省略…表示类似Else if条件2 Then 语句块2 可以继续加入条件3、条件4的判断与执行;
如果上述条件都不成立,则执行Else中的语句块n。
Else与语句块n也可以省略。
示例
根据用户输入的成绩,判断是否及格:如果小于60显示不及格;60到69显示及格;70到79显示中;80到89显示良;90到100显示优。
Sub if4()
Dim score As Integer
score = InputBox("请输入分数:", "小步教程")
If score < 60 Then
Debug.Print "不及格"
ElseIf score < 70 Then '实际条件为 >= 60 and <70
Debug.Print "及格"
ElseIf score < 80 Then '实际条件为 >= 70 and <80
Debug.Print "中"
ElseIf score < 90 Then '实际条件为 >= 80 and <90
Debug.Print "良"
Else '实际条件为 >= 90
Debug.Print "优秀"
End If
Debug.Print "程序继续执行"
End Sub
无Else代码示例。
Sub if5()
Dim score As Integer
score = InputBox("请输入分数:", "小步教程")
If score < 60 Then
Debug.Print "不及格"
ElseIf score < 70 Then '实际条件为 >= 60 and <70
Debug.Print "及格"
ElseIf score < 80 Then '实际条件为 >= 70 and <80
Debug.Print "中"
ElseIf score < 90 Then '实际条件为 >= 80 and <90
Debug.Print "良"
ElseIf score >= 90 Then '实际条件为 >= 90
Debug.Print "优秀"
End If
Debug.Print "程序继续执行"
End Sub
4 select case语句
select case用于判断具体值的匹配,等于相应值执行相应语句。
语法
Select Case 表达式
Case 值1
语句块1
Case 值2
语句块2
…
Case Else
语句块n
End Select
如果表达式的值为值1,则执行语句块1;依次匹配;
如果都不匹配,则执行Case Else中的语句块n。
示例代码。
输入分数等级的字母表示,输出相应中文。
Sub if6()
Dim grade As String
grade = InputBox("请输入分数等级(A、B、C、D、E):", "小步教程")
Select Case grade
Case "E"
Debug.Print "不及格"
Case "D"
Debug.Print "及格"
Case "C"
Debug.Print "中"
Case "B"
Debug.Print "良"
Case Else
Debug.Print "优秀"
End Select
Debug.Print "程序继续执行"
End Sub
区别select case 与if
if后跟条件,即Boolean类型:True与False,通过真假来决定语句是否执行。
select case后跟数据,可以是数值与字符串等,通过与Case 值中的值是否匹配来决定语句是否执行。