excel学习库

excel表格_excel函数公式大全_execl从入门到精通

100_VBA 程序选择结构

VBA 程序执行三大结构中,选择结构(判断)用于选择性地执行代码。选择结构与 Excel 的 IF 函数类似,也是以 IF 为关键词,按照判断条件的真假,执行不同的操作。但是 VBA 中的 IF比 Excel 中的 IF 函数更强大。

今天的文章,我们将学习 VBA 中选择结构的基本语法,并且结合实际的例子,介绍多种选择结构的形式。通过今天的学习,你将学会以下几种选择结构的语法和使用方式:

  1. If … Then 结构

  2. If … Else 结构

  3. If ElseIf Else 结构

  4. Select Case 结构

选择结构基础

选择结构,根据提供的条件表达式的值,如果为真(True),则执行选择结构的主体代码,否则跳过。

选择结构的核心是判断条件表达式的真假,这一步理解了,也就理解了选择结构的多种形式。

选择结构的基本执行方式如下:

示例数据

本篇我们使用一个班级的考试成绩作为示例数据。代码中如何与 Excel 中的数据交互,不需要看懂,这部分在 Excel 对象模型中详细介绍。

If Then 结构

选择结构中,If Then 结构是最基础的一个。它只有条件表达式真时,执行的代码。

If Then结构基本语法如下,其中 End If是选择结构的结束标志。

  1. If 条件表达式 Then

  2. '表达式为真时,执行的代码

  3. End If

现在我们看实际的例子,判断学生是否及格,及格条件是成绩 ≥60。如果及格,在C列对应单元格填写“及格”。具体代码如下:

  1. Sub MyCode()

  1. Dim i As Integer


  2. For i = 2 To 10


  3. If Cells(i, "B").Value >= 60 Then

  4. Cells(i, "C") = "及格"

  5. End If


  6. Next i

  1. End Sub

我们可以看到,我们使用 B 列中的学生成绩与 60 分比较,如果≥60分,就在 C 列填写及格。

条件表达式是 Cells(i, "B").Value >= 60,选择性执行的代码部分是 Cells(i, "C") = "及格"。

其中,For 语句是表示循环结构,这里只需知道程序从第一个学生循环到最后一个学生,依次判断每个学生的成绩。循环结构将在下一篇中做详细介绍。

将以上代码运行后,可以看到运行结果如下:

If Else 结构

很多时候,我们根据表达式的真假,真时执行一块代码,假时执行另一块代码。这种需求可以使用 If Else结构实现。

If Else结构中,条件表达式在真时,执行Then后的代码;条件表达式为假时,执行 Else后的代码。基本语法如下:

  1. If 条件表达式 Then

  2. '真时执行的代码

  3. Else

  4. '假时执行的代码

  5. End If

我们继续看实际的例子。在上一个例子的基础上,这次对不及格的学生,在C列填入不及格。代码如下:

  1. Sub MyCode()

  1. Dim i As Integer


  2. For i = 2 To 10


  3. If Cells(i, "B").Value >= 60 Then

  4. Cells(i, "C") = "及格"

  5. Else

  6. Cells(i, "C") = "不及格"

  7. End If


  8. Next i

  1. End Sub

在这个例子中,条件表达式 Cells(i, "B").Value >= 60为假时,表示学生成绩低于60分,即不及格。这时就执行 Else后的代码。

程序运行结果如下:

If ElseIf Else 结构

前面两种结构中,最多有两种选择,即 ≥ 60 和 < 60。有时针对同一个变量,可能存在多种判断标准。例如,对及格的学生,继续评级及格、良和优。

选择结构中,可以使用 If ElseIf Else结构,对同一个变量进行多次判断,并且为每一个判断结果编写不同的代码块,达到执行式 n 选 1 的效果。

If ElseIf Else结构的基本语法如下:

  1. If 条件表达式1 Then

  2. '表达式1真时,执行的代码

  3. ElseIf 条件表达式2 Then

  4. '表达式2真时,执行的代码

  5. ElseIf 条件表达式3 Then

  6. '表达式3真时,执行的代码

  7. ...

  8. ElseIf 条件表达式n Then

  9. '表达式n真时,执行的代码

  10. Else

  11. '以上表达式都不为真时,执行的代码

  12. End If

这种选择结构需要注意的是:

  1. 条件表达式是从第一个开始判断。

  2. 判断过程中,只要有一个表达式结果为真,那么执行对应的代码块,然后退出选择结构,不再继续判断剩下的表达式。

  3. 当所有的表达式都不为真时,执行 Else后的代码块。

根据以上规律,我们写一下判断学生成绩评级的代码。思路是,拿学生成绩,分别于85、75、60分比较,在 D 列填写对应的评级。

  1. Sub MyCode()

  1. Dim i As Integer


  2. For i = 2 To 10


  3. If Cells(i, "B").Value >= 85 Then

  4. Cells(i, "D") = "优"

  5. ElseIf Cells(i, "B").Value >= 75 Then

  6. Cells(i, "D") = "良"

  7. ElseIf Cells(i, "B").Value >= 60 Then

  8. Cells(i, "D") = "及格"

  9. Else

  10. Cells(i, "D") = "不及格"

  11. End If


  12. Next i

  1. End Sub

代码运行结果如下:

Select Case 结构

Select Case结构是对同一个变量进行多次判断的另一种方式。相对于If ElseIf Else结构,它把条件表达式中的变量提取出来,使得代码结构更简洁,也更易于阅读。

Select Case结构的基本语法如下:

  1. Select Case 变量

  2. Case 判断条件 1

  3. '条件 1 真时,执行的代码

  4. Case 判断条件 2

  5. '条件 2 真时,执行的代码

  6. Case 判断条件 3

  7. '条件 3 真时,执行的代码

  8. Case Else

  9. '之前的所有条件都不为真时,执行的代码

  10. End Select

可以看到,Select Case结构把 If结构中的条件表达式拆分了,即把变量和判断条件分开了。

我们看前一个例子,使用Select Case结构,代码如下:

  1. Sub MyCode()

  1. Dim i As Integer


  2. For i = 2 To 10


  3. Select Case Cells(i, "B").Value

  4. Case Is >= 85

  5. Cells(i, "D") = "优"

  6. Case Is >= 75

  7. Cells(i, "D") = "良"

  8. Case Is >= 60

  9. Cells(i, "D") = "及格"

  10. Case Else

  11. Cells(i, "D") = "不及格"

  12. End Select


  13. Next i

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接