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/

posted @ 2023-06-18 22:47  iZJ"Qq4577105  阅读(35)  评论(0编辑  收藏  举报