VBA结构总结
三大结构:顺序、选择、循环
选择
If ElseIf Else选择
If 条件表达式 Then
'真执行的,语句1
ElseIf 条件表达式
'假执行的,语句2
Else
'上面情况都不满足执行则执行本,语句3
End If
示例:
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 变量
Case 判断条件 1
'条件 1 真时,执行的代码
Case 判断条件 2
'条件 2 真时,执行的代码
Case 判断条件 3
'条件 3 真时,执行的代码
Case Else
'之前的所有条件都不为真时,执行的代码
End Select
判断条件可以是以下 3 种形式之一,或者是它们的组合(不同形式以 , 号分开)
- 确切的值:[值];
- 闭区间:[开始] To [结束];或者 使用两个Is语句,中间用逗号隔开。
- 开区间:Is [比较运算符] [比较值]。
示例:
Sub MyCode()
Dim i As Integer
For i = 2 To 10
Select Case Cells(i, "B").Value
Case Is >= 90
Cells(i, "D") = "优"
Case Is >= 80
Cells(i, "D") = "良"
Case 60 To 79 '或者Is >= 60, IS<79也可以
Cells(i, "D") = "中"
Case 0 '当等于0的时候,就不用写Is
Cells(i, "D") = "该生成绩有误"
Case Else
Cells(i, "D") = "差"
End Select
Next i
End Sub
在“Case 表达式” 中间有个Is。这个是用于表达式判断时候用的格式,这样才能够起到类似于If...Else的作用。上例中如果直接用Case 90
的格式,则只会当score等于90的时候,才会输出“优”,起不到范围判断的作用。在使用的时候,需要根据实际情况按需选择。
循环
For循环
For … Next 循环
For Each 循环
- For...Next循环
For [变量] = [初始值] To [结束值] Step [步长] 'Step不写 步长默认为1
'这里是循环执行的语句
Next [变量] 'Next关键字后接的变量名也可以是省略
示例:
Sub MyCode()
Dim i As Integer
Dim sum As Integer
For i = 1 To 10
sum = sum + i
If sum > 30 Then
Exit For 'Exit For相当于C语言中的break;跳出结束循环。在VBA中仅用于For...Next和For Each
End If
Next i
End Sub
- For Each循环
For Each 循环不需要一个数字变量,但是需要与数据集合中的元素相同的数据类型变量。
//For Each循环
For Each [元素] In [元素集合] '[元素] 是与集合中的元素相同类型的变量,[元素集合]是包括多个元素的集合。
//循环执行的代码
Next [元素]
示例:
Sub MyCode()
Dim sh As Worksheet
For Each sh In Worksheets
Debug.Print sh.Name
Next sh
End Sub
Do While循环
Do While … Loop 循环
Do … Loop While 循环
- Do While … Loop 循环
//Do While … Loop 循环
Do While [条件表达式]
'循环执行的代码
Loop
//E.g:
Sub MyCode()
Dim i As Integer
Dim sum As Integer
i = 1
Do While i <= 10
sum = sum + i
If sum > 30 Then
Exit Do //Exit Do和Exit For一样,相当于C语言中的break;跳出结束循环。在VBA中仅用于Do While系列循环
End If
i = i + 1
Loop
End Sub
- Do … Loop While 循环(至少一次)
//Do … Loop While 循环与上一种 Do 循环不同的是,
//Do ... Loop While循环至少循环执行代码一次后,再判断条件表达式的值。
//基本语法如下:
Do
//循环执行的代码
Loop While [条件表达式]
//E.g:
Sub MyCode()
Dim i As Integer
Dim sum As Integer
i = 1
Do
sum = sum + i
i = i + 1
Loop While i <= 10
End Sub
Do Until 循环
Do Until … Loop 循环
Do … Loop Until 循环
- Do Until … Loop 循环
//Do Until … Loop 循环
//循环开始前判断 Until 后条件表达式的值,如果是真,停止循环;如果是假,继续执行循环。
//基本语法如下:
Do Until [条件表达式]
//循环执行的代码
Loop
- Do … Loop Until 循环(至少一次)
//Do … Loop Until 循环 //先运行一次,再判断 Until 后条件表达式的值,如果是真,停止循环;如果是假,继续执行循环。 //基本语法如下: Do '循环执行的代码 Loop Until [条件表达式]
本文来源转载:https://www.lanrenexcel.com/vba-program-loop-structure/
作者QQ4577105