VBA 程序执行三大结构中,选择结构(判断)用于选择性地执行代码。选择结构与 Excel 的 IF 函数
类似,也是以 IF
为关键词,按照判断条件的真假,执行不同的操作。但是 VBA 中的 IF
比 Excel 中的 IF 函数
更强大。
今天的文章,我们将学习 VBA 中选择结构的基本语法,并且结合实际的例子,介绍多种选择结构的形式。通过今天的学习,你将学会以下几种选择结构的语法和使用方式:
- If … Then 结构
- If … Else 结构
- If ElseIf Else 结构
- Select Case 结构
选择结构基础
选择结构,根据提供的条件表达式的值,如果为真(True),则执行选择结构的主体代码,否则跳过。
选择结构的核心是判断条件表达式的真假,这一步理解了,也就理解了选择结构的多种形式。
选择结构的基本执行方式如下:
![图片[1]-VBA 程序选择结构-一鱼](https://yiyu0.cn/wp-content/uploads/2025/01/20250122194934200-图片.png)
示例数据
本篇我们使用一个班级的考试成绩作为示例数据。代码中如何与 Excel 中的数据交互,不需要看懂,这部分在 Excel 对象模型中详细介绍。
![图片[2]-VBA 程序选择结构-一鱼](https://yiyu0.cn/wp-content/uploads/2025/01/20250122194943823-图片.png)
If Then 结构
选择结构中,If Then
结构是最基础的一个。它只有条件表达式真时,执行的代码。
If Then
结构基本语法如下,其中 End If
是选择结构的结束标志。
If 条件表达式 Then
'表达式为真时,执行的代码
End If
现在我们看实际的例子,判断学生是否及格,及格条件是成绩 ≥60。如果及格,在C列对应单元格填写“及格”。具体代码如下:
Sub MyCode()
Dim i As Integer
For i = 2 To 10
If Cells(i, "B").Value >= 60 Then
Cells(i, "C") = "及格"
End If
Next i
End Sub
我们可以看到,我们使用 B 列中的学生成绩与 60 分比较,如果≥60分,就在 C 列填写及格。
条件表达式是 Cells(i, "B").Value >= 60
,选择性执行的代码部分是 Cells(i, "C") = "及格"
。
其中,For 语句是表示循环结构,这里只需知道程序从第一个学生循环到最后一个学生,依次判断每个学生的成绩。循环结构将在下一篇中做详细介绍。
将以上代码运行后,可以看到运行结果如下:
![图片[3]-VBA 程序选择结构-一鱼](https://yiyu0.cn/wp-content/uploads/2025/01/20250122194959172-图片.png)
If Else 结构
很多时候,我们根据表达式的真假,真时执行一块代码,假时执行另一块代码。这种需求可以使用 If Else
结构实现。
If Else
结构中,条件表达式在真时,执行Then
后的代码;条件表达式为假时,执行 Else
后的代码。基本语法如下:
If 条件表达式 Then
'真时执行的代码
Else
'假时执行的代码
End If
我们继续看实际的例子。在上一个例子的基础上,这次对不及格的学生,在C列填入不及格。代码如下:
Sub MyCode()
Dim i As Integer
For i = 2 To 10
If Cells(i, "B").Value >= 60 Then
Cells(i, "C") = "及格"
Else
Cells(i, "C") = "不及格"
End If
Next i
End Sub
在这个例子中,条件表达式 Cells(i, "B").Value >= 60
为假时,表示学生成绩低于60分,即不及格。这时就执行 Else
后的代码。
程序运行结果如下:
![图片[4]-VBA 程序选择结构-一鱼](https://yiyu0.cn/wp-content/uploads/2025/01/20250122195018335-图片.png)
If ElseIf Else 结构
前面两种结构中,最多有两种选择,即 ≥ 60 和 < 60。有时针对同一个变量,可能存在多种判断标准。例如,对及格的学生,继续评级及格、良和优。
![图片[5]-VBA 程序选择结构-一鱼](https://yiyu0.cn/wp-content/uploads/2025/01/20250122195032795-图片.png)
选择结构中,可以使用 If ElseIf Else
结构,对同一个变量进行多次判断,并且为每一个判断结果编写不同的代码块,达到执行式 n 选 1 的效果。
If ElseIf Else
结构的基本语法如下:
If 条件表达式1 Then
'表达式1真时,执行的代码
ElseIf 条件表达式2 Then
'表达式2真时,执行的代码
ElseIf 条件表达式3 Then
'表达式3真时,执行的代码
...
ElseIf 条件表达式n Then
'表达式n真时,执行的代码
Else
'以上表达式都不为真时,执行的代码
End If
这种选择结构需要注意的是:
- 条件表达式是从第一个开始判断。
- 判断过程中,只要有一个表达式结果为真,那么执行对应的代码块,然后退出选择结构,不再继续判断剩下的表达式。
- 当所有的表达式都不为真时,执行
Else
后的代码块。
根据以上规律,我们写一下判断学生成绩评级的代码。思路是,拿学生成绩,分别于85、75、60分比较,在 D 列填写对应的评级。
Sub MyCode()
Dim i As Integer
For i = 2 To 10
If Cells(i, "B").Value >= 85 Then
Cells(i, "D") = "优"
ElseIf Cells(i, "B").Value >= 75 Then
Cells(i, "D") = "良"
ElseIf Cells(i, "B").Value >= 60 Then
Cells(i, "D") = "及格"
Else
Cells(i, "D") = "不及格"
End If
Next i
End Sub
代码运行结果如下:
![图片[6]-VBA 程序选择结构-一鱼](https://yiyu0.cn/wp-content/uploads/2025/01/20250122195047252-图片.png)
Select Case 结构
Select Case
结构是对同一个变量进行多次判断的另一种方式。相对于If ElseIf Else
结构,它把条件表达式中的变量提取出来,使得代码结构更简洁,也更易于阅读。
Select Case
结构的基本语法如下:
Select Case 变量
Case 判断条件 1
'条件 1 真时,执行的代码
Case 判断条件 2
'条件 2 真时,执行的代码
Case 判断条件 3
'条件 3 真时,执行的代码
Case Else
'之前的所有条件都不为真时,执行的代码
End Select
可以看到,Select Case
结构把 If
结构中的条件表达式拆分了,即把变量和判断条件分开了。
我们看前一个例子,使用Select Case
结构,代码如下:
Sub MyCode()
Dim i As Integer
For i = 2 To 10
Select Case Cells(i, "B").Value
Case Is >= 85
Cells(i, "D") = "优"
Case Is >= 75
Cells(i, "D") = "良"
Case Is >= 60
Cells(i, "D") = "及格"
Case Else
Cells(i, "D") = "不及格"
End Select
Next i
End Sub
这一例子中,学生成绩是变量,即 Cells(i, "B").Value
,判断条件是每个 Case
语句后的条件。
代码运行结构如下:
![图片[7]-VBA 程序选择结构-一鱼](https://yiyu0.cn/wp-content/uploads/2025/01/20250122195101618-图片.png)
总结
以上就是选择结构的基本用法,以及 4 种选择结构。选择结构的核心是判断条件表达式的真假,从另一个角度看,核心是如何写条件表达式。这一步写好了,下一步就是根据判断结果执行不同的代码块。
感谢您的来访,获取更多精彩文章请收藏本站。

暂无评论内容