
在 VBA 编程的三大基本结构中,选择结构(又称判断结构)用于依据条件是否成立来决定是否执行某段代码。其逻辑与 Excel 中的 IF 函数相似,均以 IF 为关键字,根据条件真假分支执行不同操作。但 VBA 中的 IF 语句功能更为灵活和强大。
本文将系统讲解 VBA 中选择结构的基础语法,并结合真实教学场景——班级成绩处理,演示各类选择结构的具体写法与适用场合。学完本节内容,你将熟练掌握以下四种常用选择结构:
- If … Then 单分支结构
- If … Else 双分支结构
- If … ElseIf … Else 多分支结构
- Select Case 分支结构
选择结构的本质在于:依据条件表达式的运算结果(True 或 False),决定是否执行对应代码块。只要准确理解“条件如何判定真假”,就能轻松驾驭所有变体形式。
选择结构的标准运行流程如下:
示例数据
本文统一采用某班级学生考试成绩表作为演示数据源。关于 VBA 如何读取、写入 Excel 单元格的操作细节,暂无需深究;相关内容将在后续“Excel 对象模型”专题中深入解析。
If Then 结构
这是最简化的选择结构,仅在条件为真时执行指定语句,否则直接跳过。
If Then 的标准语法格式如下,其中 End If 是该结构的终止标识:
If 条件表达式 Then
'当条件为 True 时执行的代码
End If
我们以“判断是否及格”为例:若 B 列成绩 ≥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
该代码遍历第 2 行至第 10 行,逐行比对 B 列分数与 60 的大小关系。条件表达式为 Cells(i, "B").Value >= 60,满足时即向 C 列写入“及格”。
此处的 For 循环属于循环结构范畴,仅需了解其作用是批量处理每一行数据即可;循环结构详解将在下一篇文章展开。
运行上述代码后,效果如下图所示:
If Else 结构
当需要对条件成立与不成立两种情况分别处理时,可使用 If Else 结构:条件为真时执行 Then 后代码;为假时则执行 Else 后代码。
其通用语法如下:
If 条件表达式 Then
'条件为 True 时执行的代码
Else
'条件为 False 时执行的代码
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 返回 False(即成绩
运行结果如下:
If ElseIf Else 结构
前两种结构最多支持两个分支,而实际业务中常需多级判断。例如,在“及格”基础上进一步细分为“优”“良”“及格”“不及格”。
If ElseIf Else 结构允许对同一变量设置多个判断层级,实现 n 种结果中择一执行的效果。
其语法模板如下:
If 条件表达式1 Then
'表达式1为真时执行的代码
ElseIf 条件表达式2 Then
'表达式2为真时执行的代码
ElseIf 条件表达式3 Then
'表达式3为真时执行的代码
...
ElseIf 条件表达式n Then
'表达式n为真时执行的代码
Else
'所有前述条件均为假时执行的代码
End If
使用要点说明:
- 判断顺序从上到下依次进行;
- 一旦某个条件为 True,立即执行对应代码块并退出整个结构,不再检查后续条件;
- 若全部条件都不满足,则执行 Else 块中的代码。
下面我们编写一个成绩评级程序:根据 B 列分数,在 D 列输出“优”(≥85)、“良”(≥75)、“及格”(≥60)或“不及格”(
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
运行效果如下:
Select Case 结构
Select Case 是另一种处理多重判断的方式。它将被比较的变量单独提出,使逻辑更清晰、结构更紧凑,尤其适合对单一变量做多种取值判断。
其基础语法如下:
Select Case 变量
Case 判断条件 1
'条件1匹配时执行的代码
Case 判断条件 2
'条件2匹配时执行的代码
Case 判断条件 3
'条件3匹配时执行的代码
Case Else
'以上均不匹配时执行的代码
End Select
对比 If 结构,Select Case 将“变量”与“判断条件”分离,提升可读性与维护性。
仍以成绩评级为例,改用 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 后的 Is >= X 是具体的判断条件。
运行结果如下:
总结
本文全面介绍了 VBA 中的选择结构及其四种典型形态。无论采用哪一种形式,其根本逻辑始终围绕一点:正确构造条件表达式,并据此驱动不同路径的代码执行。因此,掌握条件表达式的书写技巧,是高效运用选择结构的关键所在。










