分享

循环-控制程序执行(精华版)

 VBA说 2020-04-07
循环语句

1

IF条件判断语句

a.单行形式1(If...Then)

       If条件判断then条件成立结果

       注意: 在单行形式中,按照If...Then 判断的结果也可以执行多条语句。所有语句必须在同一行上并且以冒号分开。

实例:

Sub test()

If A > 10 Then A = A + 1 : B = B+ A : C = C + B

End Sub

b.块形式(If...Then…End)常用

If 条件判断  Then

条件成立结果

End If

实例:

                 If A > 10 Then

                      A = A + 1

                      B = B + A

                      C = C + B

                 End If

c.块形式的嵌套

If条件判断 Then
条件成立时的结果

ElseIf条件判断 Then
条件成立时的结果

……

Else
条件不成立时的结果

End If

实例:

Sub 等级判断()

    IfSheet1.Range("b1") >= 90 Then

       Sheet1.Range("b2") = "优"

    ElseIfSheet1.Range("b1") >= 80 Then

       Sheet1.Range("b2") = "良"

    ElseIfSheet1.Range("b1") >= 70 Then

       Sheet1.Range("b2") = "中"

    Else

       Sheet1.Range("b2") = "差"

    End If

End Sub

2

DO...LOOP循环语句

形式1:

Do  While  逻辑表达式
             [循环体]
             [Exit Do]           
             [循环体]

Loop

形式2:

Do   
             [循环体]
             [Exit Do]           
             [循环体]

Loop [{While | Until}表达式]

说明:

Exit Do  为可选语句,执行后将跳出循环,执行LOOP以后的语句

②while形式1中,当这个条件为True时就   循环,当没有while时候为do...loop循环形式,一般结合if...then...语句使用。表示符合某条件时结束。

③无论是形式1还是形式2,循环语句中都要自己加计步器,也就是i= i+1


实例:

Sub test()

    Dim i As Integer

    i = 2

    Do While Cells(i, 2) > 800

         i = i + 1

    Loop

    MsgBox   cell(i,1)

End Sub

代码解释:让计数器在2的基础上累加,直到条件”Cells(i, 2) > 800”成立时,停止循环。最后根据计数器i的值引用对应的单元格,显示出来。

3

For  each...next循环语句

注释:针对一个数组或集合中的每个元素,重复执行一组语句。

语法结构:

For Each遍历集合或数组中所有元素的变量 In对象集合或数组的名称
[执行的一条或多条语句]

[Exit For]
[执行的一条或多条语句]

Next

说明:For Each在集合对象或数组元素循环完后,就退出来循环。

实例:遍历循环所有工作表

  Sub ShCount2()

           Dim Sh As Worksheet

           Dim s As String

          For Each Sh In Worksheets

                 s = s & Sh.Name & Chr(13)

          Next

          MsgBox "工作簿中含有以下工作表:" & Chr(13) & s

  End Sub

4

For ...next循环语句

注释:以指定次数来重复执行一组语句

For 计数变量 = 初始值 To 终止值 [Step 步长值]
[执行的一条或多条语句]
[Exit For]
[执行的一条或多条语句]

Next [计数变量]    

说明:

1.循环中可以在任何位置放置任意个 Exit For 语句,随时退出循环。

2.Exit For与 If...Then经常一起使用,目的是:找到符合条件后,跳出循环,而不必再进行不必要的循环。

3. [计数变量]   可以不写

4.[Step 步长值]可正可负。默认为1。若为负数,则从循环变量的终止值开始循环。一般批量删除空行或者批量删除工作表的时候,步长值用负数。(也就是所谓的从后往前删除,从前往后删除会遗漏)

实例1:批量删除空行

Sub 删除空行()

    Dim i As Long

    For i = 65536 To 1 Step  -1    '注意,这里的步长值是负数

        If Cells(i, 1) = "" Then

            Cells(i, 1).EntireRow.Delete

        End If

    Next

End Sub

实例2:遍历循环所有工作表

Sub ShCount1()

      Dim c As Integer

      Dim i As Integer

      Dim s As String

      c= Worksheets.Count

      For i = 1 To c

          s = s & Worksheets(i).Name &Chr(13)

      Next

      MsgBox "工作簿中含有以下工作表:" & Chr(13) & s

  End Sub

欢迎点赞、转发、收藏。

公众号 ID:todayvba
VBA | 干货 | 交流 | 分享

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多