精华内容
下载资源
问答
  • 今日给大家讲VBA循环,这个是非常基础的知识,在VBA的相关内容中我也一直在用,也在不断的讲解。今日专门作为一个专题给大家详细地说明,中间也有一些有意思的小例子,供大家玩耍。一FOR NEXT语...

    首先欢迎各位朋友来到这个平台,分享自己的成果,福不唐捐,总会有所收获。无论是EXCEL的操作,还是VBA的操作,都会对大家有所帮助。知识的讲解过程中,希望大家得到哪怕是一点点的收获,我的时间就是有意义的。

    今日给大家讲VBA的循环,这个是非常基础的知识,在VBA的相关内容中我也一直在用,也在不断的讲解。今日专门作为一个专题给大家详细地说明,中间也有一些有意思的小例子,供大家玩耍。

    一FOR NEXT语句这种循环是以指定的次数来重复执行一组语句

    这个结构一般是这样的:

    for counter= start to end [ step步长值]

    [statements]

    [exit for]

    [statements]

    Next counter

    具体解释一下,初始值指的是循环开始的值,结束值指的是循环结束的值,实质上就是counter值的一个判断,如果counter值在起始值和结束值之间,那么进入循环语句,然后counter值每运行到next语句后,会自动加一个步长值,直至counter值超出了初始值到结束值这个范围,循环才会结束。这里要说明一下,“step步长值”往往是省略掉的,省略掉的话,步长取默认值为1。下面将以一段小实例来具体说明这个结构的用法。

    实例:在sheet1工作表中一次输出1到100这些数,显示在第一列中。

    程序:

    Sub kk()

    Sheets(“sheet1”).select

    Dim i As Integer

    For i = 1 To 100

    Cells(i, 1) = i

    Next

    End Sub

    二for each …NEXT语句这种循环主要功能是对一个数组或一个对象进行操作,让所用元素执行一次循环语句

    For each element in group

    [statements]

    [exit for]

    [statements]

    Nexr element

    具体解释一下,在for next循环中主要是数值变量,而for each …NEXT这种结构是对象变量。什么意思呢?each……in指的是在这个对象集合里面,一次将每一个对象都遍历一边。同样的道理,执行到next后对象自动指到下一个。具体我们来看一下下面的一个实例吧。

    实例:给一个数据区域a1:d5内的所有单元格随机赋值。

    分析:显然数据区域就是一个对象集合,单元格就是这个集合里面的对象。

    程序:

    Sub JJ()

    Sheets("SHeet1").Select

    Dim i As Integer

    For Each c In Range("a1:d5")

    c.Value = Rnd

    Next

    End Sub

    三DO loop语句在条件为true时,重复执行命令区域

    DO WHILE CONDITION

    [statements]

    [exit do]

    [statements]

    LOOP

    或者:

    DO

    [statements]

    [exit do]

    [statements]

    LOOP WHILE CONDITION

    备注:上面的while可以用until代替。

    VBA中如果事先不知道将重复多少次循环,只是知道判断的条件,那么使用Do...Loop语句。Do...Loop语句重复执行某段代码直到条件是true或条件变成true。重复执行代码直到条件是true使用While关键字来检查Do... Loop语句的条件。

    举例:我们用Do While语句来解决求1—100的自然数的和的问题:

    Sub my_sum()

    Dim Lsum As Long, i As Long

    i = 1

    Do While i

    Lsum = Lsum + i

    i= i + 1

    Loop

    MsgBox "1到100的自然数和为:" & Lsum

    End Sub

    好了,到这里把三个循环体都做了讲解,上面也讲到了三个实例,截图如下,我都做了测试,可以使用。

    今日内容回向:

    1 VBA中三种循环体是什么?

    2三种循环的区别和联系是什么?

    3如果不知将循环多少次?用哪个循环体?

    4试着把第一个例子改成第三个的模式。

    分享成果,随喜正能量

    展开全文
  • VBA-循环语句之Do...Loop

    千次阅读 2018-11-08 16:35:22
    Loop 循环语句,直到满足某个条件 Sub DoLoop基本示例() Dim a% Do a = a + 1 If a > 10 Then MsgBox a & "终于大于10" Exit Do End If Loop End Sub 实例应用:将大于...

    声明:笔记来源于我要自学网-《Excel VBA基础教程》-授课讲师:曾贤志


    Do ... Loop 循环语句,直到满足某个条件

    Sub DoLoop基本示例()
    Dim a%
    Do
    a = a + 1
        If a > 10 Then
        MsgBox a & "终于大于10"
        Exit Do
        End If
    Loop
    End Sub

    实例应用:将大于等于90分的勾选出来

    Sub 判断成绩并打勾()
    Dim rs%
    rs = 1
    Do
        rs = rs + 1
            If rs > 10 Then
                Exit Do '这里也可以写做Exit sub,因为已经完成了所有判断,直接就退出整个子过程
            Else
                If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
            End If
    Loop
    End Sub
    Sub 循环语句while() '该代码比上面这个代码更简洁
    Dim rs%
    rs = 2
    Do While Cells(rs, 2) <> "" '当单元格不等于空时,则循环
        If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
        rs = rs + 1
    Loop '循环
    End Sub
    Sub 循环语句DOLOOP2()
    Dim rs%
    rs = 2
    Do Until Cells(rs, 2) = "" '直到单元格为空时,才结束
        If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
        rs = rs + 1
    Loop '循环
    End Sub

    实例应用:进行隔行填色

    Sub 隔行填色实例应用()
        Dim rs%
        rs = 2
        Do Until Sheet1.Range("a" & rs) = ""
        Sheet1.Range("a" & rs & ":g" & rs).Interior.ColorIndex = 7
        rs = rs + 2
        Loop
    End Sub

    while与until不但可以放在Do后面,也可以放在loop后面
    事实上有时在循环的最后一行进行判断,更具有意义

    Sub doloop的最后判断循环()
    Dim pa$, i!
    Do
    i = i + 1   '作用是对输入次数做个累加
    If i > 3 Then Exit Do   '当输入错误超出3次,就关闭了窗口,退出了Do循环
        pa = InputBox("请输入密码")   '在输入框键入密码;先键入密码,再做判断
    Loop Until pa = "123" '判断键入的密码是不是123,如果是就退出循环,不是则继续循环
    End Sub

    ***Do...Loop语法小结***
    Do [{While | Until} 表达式]
    [执行的一条或多条语句]
    [Exit Do]
    [执行的一条或多条语句]
    Loop
    ---------------------------------------------------------
    while:当这个条件为True时就 循环
    until:直到这个条件为True时就 跳出循环
    ---------------------------------------------------------
    或者可以使用下面这种语法:
    Do
    [执行的一条或多条语句]
    [Exit Do]
    [执行的一条或多条语句]
    Loop [{While | Until}表达式]
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------
    用Do...Loop循环要注意的几点:
         1,While与Until是放在Do后面还是Loop后面,取决于是先判断再循环,还是先循环再判断。
         2,可以在Do...Loop中的任何位置放置任意个数的 Exit Do 语句,随时跳出 Do...Loop 循环。
         3,Do...Loop + If...Then + Exit Do 通常结合使用。
         4,如果Exit Do 使用在嵌套的 Do...Loop 语句中,则 Exit Do 会将控制权转移到 Exit Do 所在位置的外层循环。

    Sub 第3点例子实例()
    Dim a%
    Do
    a = a + 1
        If a > 5 Then
            MsgBox a & "终于大于5"
            Exit Do
        End If
    Loop
    End Sub
    Sub 第4点例子实例() '注意这是一个死循环,按F8运行(中止死循环:Ctrl+暂停键)
    Do
    b = b + 1
        Do
            a = a + 1
            If a > 3 Then MsgBox "即将跳出内层循环": Exit Do
        Loop
    MsgBox "即将进行外层循环"
    Loop
    End Sub

     

    展开全文
  • 有的循环语句是明确了循环次数,比如上面的例子,循环从1到10,有的无法指定循环的次数,比如在一个不规则的区域,或者是在工作簿中的所有工作表内进行循环。当明确循环的次数时:语句:for 变量...

    先来看一个实例:

    06be09f3ab122fb782ec5651f4ed1fec.png

    如上图,需要统计A1:A10区域中小于0的数字个数。

    在VBA中实现上述目的,肯定需要判断语句,而且要每个单元格挨个往过判断,从A1单元格开始判断到A10单元格,这就需要一个语句从A1循环到A10。

    有的循环语句是明确了循环次数,比如上面的例子,循环从1到10,有的无法指定循环的次数,比如在一个不规则的区域,或者是在工作簿中的所有工作表内进行循环。

    当明确循环的次数时:

    语句:

    for 变量 = 初始值 to 终值 step 步长

    代码

    next 变量

    如果省略step不写,默认步长为1。

    如上面里例子:

    代码如下:

    b58aebf300fdc7b0ca8c7dac933a14c4.gif

    Sub 统计数字个数()

    Dim n As Integer

    Dim x As Integer

    For n = 1 To 10

    If Range("A" & n).Value < 0 Then

    x = x + 1

    End If

    Next n

    Range("B2").Value = x

    End Sub

    指定两个变量n和x,n用来循环,从1到10,x用来计数,每出现一次负数就把上次得到的x值加1赋予x,最后在B2单元格中显示x的值。

    思考:

    如果上例中A列最后一个非空单元格的位置是不确定的,比如我们在A10单元格下面的单元格中随便输入一个数据,那我们的代码如何才能不需要修改N的循环值就可以实现效果呢?

    2230b18c46e77234d6f82695bfae3c09.gif

    代码如下:

    Sub 统计数字个数2()

    Dim n As Integer

    Dim x As Integer

    Dim i As Integer

    i = Range("A65536").End(xlUp).Row

    For n = 1 To i

    If Range("A" & n).Value < 0 Then

    x = x + 1

    End If

    Next n

    Range("B2").Value = x

    End Sub

    上例告诉我们,可以用变量作为循环的初始值或者是终止值。

    写代码时忘记怎么写可以用录制宏的方式来参考代码,VBA中A列最后一个单元格是range("A65536")。

    当未明确循环的次数时

    1ac32363260ffa87528885495d36fd5c.png

    如上例中,要统计两个区域小于0的数字个数,这个循环该如何指定呢?

    for each 变量 in 指定的集合

    代码

    next 变量

    4fd75974dc5210521c1d3bc81a2dfdf0.gif

    Sub 统计数字个数1()

    Dim n As Range

    Dim x As Integer

    For Each n In Union(Range("a1:a10"), Range("c4:c12"))

    If n.Value < 0 Then

    x = x + 1

    End If

    Next n

    Range("B2").Value = x

    End Sub

    Union(Range("a1:a10"), Range("c4:c12")),这个联合的区域构成一个集合,让N在这个区域内循环。

    转自:米宏Office

    展开全文
  • VBA-循环语句之For Each..Next

    千次阅读 2018-11-08 17:29:30
    声明:笔记来源于我要自学网-《Excel VBA基础教程》-授课讲师:曾贤志 当需要处理集合成员时,一般会用 For Each...Next,实际上就是处理对象 实例应用:判断是否等于“A1”是就填充底色为红色 Sub foreachnext...

    声明:笔记来源于我要自学网-《Excel VBA基础教程》-授课讲师:曾贤志


    当需要处理集合成员时,一般会用 For Each...Next,实际上就是处理对象

    实例应用:判断是否等于“A1”是就填充底色为红色

    Sub foreachnext循环1()
    Dim rng As Range, n!
    For Each rng In Sheet1.Range("a2:a10")  '取a2:a10中的每个单元格
        If rng = "A1" Then rng.Interior.ColorIndex = 3  '判断取的每个单元格值是否等于A1,等于就给单元格底色填充为3(红色)
    Next
    End Sub

    实例应用:取出当前工作簿的工作表名

    Sub foreachnext循环2()
    Dim wsh As Worksheet, n As Byte, m As String
    For Each wsh In Worksheets '取当前工作表集合中的每个成员
        n = n + 1
        m = wsh.Name    '最后这两行代码,可以合成:Sheet1.Cells(n, 3) =wsh.Name
        Sheet1.Cells(n, 3) = m
    Next
    End Sub

    For...Next也是循环语句,与Do...Loop不同之处在于,For Next 有一个内置的计数器

    Sub fornext循环2()
    Dim i!, j!
        For i = 1 To 100    '可在后面加上 step 1 即步长值(默认就是step,所以可以忽略不写)
        j = j + i
        Next
    MsgBox j
    End Sub

    实例应用:对D列进行金额计算

    Sub fornext循环实例()
    Dim rng!
    For rng = 2 To 16   '从2行循环到16行
        Sheet1.Cells(rng, 4) = Sheet1.Cells(rng, 2) * Sheet1.Cells(rng, 3)
    Next
    End Sub

    ***For...Next小结与实例***
    ----------------------------------------------------------------------------------------------------------------------------------
    For...Next 语句
    以指定次数来重复执行一组语句
    语法:
    For 计数变量 = 初始值 To 终止值 [Step 步长值]
    [执行的一条或多条语句]
    [Exit For]
    [执行的一条或多条语句]
    Next [计数变量]可以忽略不写
    --------------------------------------------------------------------------

         1.循环中可以在任何位置放置任意一个Exit For 语句,随时退出循环。
         2.Exit For 与 If...Then 经常一起使用,目的是:找到符合条件后,跳出循环,而不必再进行不必要的循环。

    例子:根据表格中的数据,统计出2班的人数

    Sub test()
    For i = 1 To 16
        If Cells(i, 1) = "2班" Then Exit For '找到2班的起始位置
    Next i
    For j = 1 To 16
        If Cells(j, 1) = "3班" Then Exit For '找到3班起始位置
    Next j
    MsgBox "2班的人数为:" & j - i  '3班起始位置行号-2班起始位置行号
    End Sub

         3.可以将一个 For...Next 循环放置在另一个 For...Next 循环中,组成嵌套循环。
               For i = 1 To 10
                   For j = 1 To 10
                       For k = 1 To 10
                       .........
                       Next k
                   Next j
               Next i

    例子:理解计数变量的运行

    Sub 理解计数变量的运行()
        For i = 1 To 2
            For j = 1 To 3
                k = "外层的第" & i & "次的,内层的第" & j & "次"
            Next j
        Next i
    End Sub

    实例应用:制作九九乘法表(如图)

    Sub 九九乘法表制作()
    Dim a!, b!
    For a = 1 To 9
        For b = 1 To 9
            If b > a Then
                Sheet1.Cells(a, b) = ""
            Else
                Sheet1.Cells(a, b) = a & "x" & b & "=" & a * b
            End If
        Next
    Next
    End Sub

     

     

    展开全文
  • Excel VBA运用,删除行,循环For each next,rows.count计算,添加指定数据等, 打开Excel启用宏,然后按快捷键Ctrl+E
  • EXCEL VBA应用开发与实例精讲

    热门讨论 2009-05-06 15:34:29
    2.7 循环语句 2.8 用于退出或暂停程序的语句 2.9 过程和函数 2.10 小结 第3章 使用自带函数 3.1 单元格的引用 3.2 函数使用入门 3.3 函数应用实例 3.4 外部引用 3.5 函数的功能简介 3.6 使用自定义函数 3.7 小结 第4...
  • EXCEL VBA应用开发与实例精讲完整版

    热门讨论 2012-04-16 14:17:15
    2.7 循环语句 2.8 用于退出或暂停程序的语句 2.9 过程和函数 2.10 小结 第3章 使用自带函数 3.1 单元格的引用 3.2 函数使用入门 3.3 函数应用实例 3.4 外部引用 3.5 函数的功能简介 3.6 使用自定义函数 ...
  • EXCEL VBA应用开发与实例精讲1/4

    热门讨论 2009-05-03 23:30:38
    2.7 循环语句 2.8 用于退出或暂停程序的语句 2.9 过程和函数 2.10 小结 第3章 使用自带函数 3.1 单元格的引用 3.2 函数使用入门 3.3 函数应用实例 3.4 外部引用 3.5 函数的功能简介 3.6 使用自定义函数 3.7 小结 第4...
  • EXCEL VBA应用开发与实例精讲4/4

    热门讨论 2009-05-06 15:38:12
    2.7 循环语句 2.8 用于退出或暂停程序的语句 2.9 过程和函数 2.10 小结 第3章 使用自带函数 3.1 单元格的引用 3.2 函数使用入门 3.3 函数应用实例 3.4 外部引用 3.5 函数的功能简介 3.6 使用自定义函数 3.7 小结 第4...
  • 2.7 循环语句 2.8 用于退出或暂停程序的语句 2.9 过程和函数 2.10 小结 第3章 使用自带函数 3.1 单元格的引用 3.2 函数使用入门 3.3 函数应用实例 3.4 外部引用 3.5 函数的功能简介 3.6 使用自定义函数 3.7 小结 第4...
  • 这是一个常用而且经典的例子:根据内容,把N个工作表中的内容,...2、IF分支语句和For循环语句的使用; ¤代码实例¤ Option Explicit Sub 合并工作表() Dim i As Integer Dim x As Integer, y As Integer Dim
  • 循环,书签(Bookmarks)中的循环等等,函数的应用、选择性分支语句、判断语句、 错误处理、类模块的使用、用户窗体的使用、数组的应用、Automation等等,不一一 列举,读者可根据自身情况,逐一进行渐进式学习。 ...
  • VBA与数据库

    2015-11-19 18:07:38
    实例5-7 将工作表数据保存到已有的Access数据库(循环方式)(DAO) 136 •实例5-8 将工作表数据保存到已有的Access数据库(数组方式)(ADO) 138 •实例5-9 将工作表数据保存到已有的Access数据库(数组方式)...
  • 第九节 循环语句 第十节 其他类语句和错误语句处理 第十一节 过程和函数 第十二节 内部函数 第二章 Excel VBA常用对象之使用 第一节 文件的操作 1) Excel文件 2) 文本文件 3) Access文件 第二节 工作表操作...
  • 12、几个for—next 循环的例子(作者:老朽 13、程序流程控制:For—Each语句 14、程序流程控制:Do While语句 15、程序流程控制:Do Until语句 16、程序流程控制:Go to 语句 17、用户窗体 18、再说Excel的...
  • Excel+VBA+之快速上手

    2012-02-14 19:39:00
    第九节 循环语句 第十节 其他类语句和错误语句处理 第十一节 过程和函数 第十二节 内部函数 第二章 Excel VBA常用对象之使用 第一节 文件的操作 1) Excel文件 2) 文本文件 3) Access文件 4) 文件其它操作 ...
  • Excel VBA与数据库整合应用范例精讲

    热门讨论 2011-10-29 18:48:38
    实例1-3 利用SQL语句创建数据库和数据表 实例1-4 在已有的数据库中创建数据表(DAO) 实例1-5 在已有的数据库中创建数据表(ADOX) 实例1-6 在已有的数据库中创建数据表(SQL,Command对象) 实例1-7 在已有的...
  • 第九节 循环语句 第十节 其他类语句和错误语句处理 第十一节 过程和函数 第十二节 内部函数 第二章 Excel VBA常用对象之使用 第一节 文件的操作 1) Excel文件 2) 文本文件 3) Access文件 4) 文件其它操作 ...
  • 实例1-3 利用SQL语句创建数据库和数据表 实例1-4 在已有的数据库中创建数据表(DAO) 实例1-5 在已有的数据库中创建数据表(ADOX) 实例1-6 在已有的数据库中创建数据表(SQL,Command对象) 实例1-7 在已有的...
  • 零基础自学VBA(三)

    2019-06-25 20:47:56
    大概花了一周的时间上完了VBA基础部分的课程,基本上知道了大概的编写规则,下面计划一边做实例一边学习。 总结下学过的基本函数: 1、循环 (1)Do…Loop… (2)Do while…Loop… (3)Do …Loop until…/Do until...
  • │ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs │ │ a.txt │ │ Schema.ini │ │ │ └─其他 │ bcp-数据导入导出(全).sql │ bcp-数据导入导出-二进制文件.sql │ bcp-数据导出为文件.sql │ bcp表数据存为XML....
  • 任务294: Python循环语句之循环控制语句 任务295: Python爬虫之爬虫基础 任务296: Python爬虫之爬虫入门之原理篇 任务297: Python爬虫之爬虫入门之请求对象简介 任务298: Python爬虫之爬虫入门之小案例爬取简单...
  • 10.2.4 在子窗体中使用SQL的UNION语句查询所有记录 266 10.2.5 在组合框控件外显示组合框的列 268 10.2.6 根据用户的输入添加新的组合框选项 271 10.3 使用本机的Access选项卡控件 273 10.3.1 本机的选项卡...
  • 10.2.4 在子窗体中使用SQL的UNION语句查询所有记录 266 10.2.5 在组合框控件外显示组合框的列 268 10.2.6 根据用户的输入添加新的组合框选项 271 10.3 使用本机的Access选项卡控件 273 10.3.1 本机的选项卡控件...
  • 本书分为12章,涵盖了使用Access 2003来设计数据库系统的相关概念与技巧,通过实例让读者轻松学会表、查询、窗体、数据访问页的制作,更有宏、控件、VBA等高级应用知识等待你去探索。 本书理论与实践相结合,解说...
  • 本书分为12章,涵盖了使用Access 2003来设计数据库系统的相关概念与技巧,通过实例让读者轻松学会表、查询、窗体、数据访问页的制作,更有宏、控件、VBA等高级应用知识等待你去探索。 本书理论与实践相结合,解说...
  • 本书分为12章,涵盖了使用Access 2003来设计数据库系统的相关概念与技巧,通过实例让读者轻松学会表、查询、窗体、数据访问页的制作,更有宏、控件、VBA等高级应用知识等待你去探索。 本书理论与实践相结合,解说...
  • 本书分为12章,涵盖了使用Access 2003来设计数据库系统的相关概念与技巧,通过实例让读者轻松学会表、查询、窗体、数据访问页的制作,更有宏、控件、VBA等高级应用知识等待你去探索。 本书理论与实践相结合,解说...
  • 8.2.1 循环语句 317 8.2.2 装箱 319 8.3 泛型 320 8.3.1 泛型的使用 321 8.3.2 nullable类型 322 8.3.3 泛型类型 323 8.3.4 泛型方法 326 8.4 创建泛型 327 8.4.1 泛型类型 328 8.4.2 泛型方法 334 8.4.3 ...
  • 8.2.1 循环语句 317 8.2.2 装箱 319 8.3 泛型 320 8.3.1 泛型的使用 321 8.3.2 nullable类型 322 8.3.3 泛型类型 323 8.3.4 泛型方法 326 8.4 创建泛型 327 8.4.1 泛型类型 328 8.4.2 泛型方法 334 8.4.3 ...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

vba循环语句实例