1、循环的作用和原理

作用:用来有效地重复执行相同或者相似的操作。Sub vv()

Dim i As Long

i = 0

i = i + 1

i = i + 1

i = i + 1

i = i + 1

i = i + 1

MsgBox i

End Sub

上面代码,每句 i=i+1执行后,i 都在原来的基础上加上 1。因此最后 i=5。

显然,i=i+1这5句代码都是重复的操作。假如要执行 【 i=i+1】 100次、1000次,那代码得需要写多长?

于是,就有了循环。For循环是一个结构,For开始,Next结尾。Dim i As Long

Dim x As Long '循环次数

i = 0

For x = 1 To 5

i = i + 1

Next

如上面的代码,For x = 1 To 5 表示循环是从1-5执行5次,表示执行了5次 i=i+1 这样的操作。

For循环的原理:For循环实际上是内置了一个看不到的计数器,当x=1时,执行 i=i+1 完毕后,Next会自动进入下一次循环(内置计数器计数记录),下一次 x=2 ,执行 i=i+1 完毕后,再下一次 x=3.....如此循环重复,直到循环结束,就是x=6(超过5)的时候结束。如下面的gif图。

2、For循环的步长。

步长就是我们军训排队时,教官号令报数,单数出列。单数1、3、5、7.....之间都相差 2,这就是步长。

如,现在我们要在A1:A10单元格区域,依次选择单数A1、A3、A5......A9。步长是使用要在For语句后面写上

Step 步长值。Dim i As Long

For i = 1 To 10 Step 2 '步长为2

Cells(i, 1).Select

Next

上面代码 i 的值变化依次是1、3、5、7、9。

实际上 For x = 1 To 5 是省略了步长 Step 1 的,默认步长是1的情况下可省略。

3、For循环的方向

一般循环的方向是从上到下的,但也可以从下到上。VBA删除行就是一个典型的例子。

下面例子,删除A1:A12中空单元格所在的行。

如果需要从下到上循环,注意两点:

1、For i = 12 To 1 而不是 For i = 1 To 12

2、Step -1声明方向,不可以省略。-1 是反方向的步长值,可以更改,但必须负整数。Sub gggg()

Dim i As Long

For i = 12 To 1 Step -1 '注意方向

If Range("a" & i) = "" Then

Range("a" & i).EntireRow.Delete '删除整行

End If

Next

End Sub

4、循环的嵌套

正如 if结构可以嵌套,循环也可以。下面例子用两个循环,一次填充数字1-10。

该代码,先开始执行外循环(不执行完,一次一次来),然后执行完内循环(执行完5次),再进入下一次外循环,重复执行内循环.....

5、退出For循环

下面例子,H1:H6有6个姓名。我们需要在其中寻找“小乔”,一般情况下,找到小乔了,我们就会停止寻找动作,是不是?所以这里的循环次数并不是6次,而是4次,我们找到小乔后提前退出了。

if结构常常用来配合退出循环。退出循环的语句是Exit For。

Dim i As Long

For i = 1 To 6

If Cells(i, "h") = "小乔" Then

Cells(i, "h").Interior.ColorIndex = 3 '设置背景颜色

Exit For '退出循环

End If

Next

李白和百里玄策不管啦!

6、另一个For循环:For each.....Next

For each.....Next循环常常用来遍历集合对象。Dim Sht As Worksheet

For Each Sht In Worksheets

Debug.Print Sht.Name

Next

代码遍历工作表集合,依次打印工作簿中每个工作表的名称。

【小结】

这是简单系列的第8篇文章,现在开始我们的VBA编程之旅了。

在现学到的知识范围内,我们可以尝试解决3个实际问题。

VBA其实真的很简单!

例子1:高级筛选

代码如下,仅供参考:Sub bb()

Range("a1:c1").Copy Range("j1") '复制标题

k = 1 '记录行号

For i = 2 To 13 '循环遍历数据

'如果部门是A且销售额大于等于1500

If Cells(i, 1) = "A" And Cells(i, 3) >= 1500 Then

k = k + 1 '计数,辅助输出数据到 j 列的单元格区域

'表格整行数据复制到 j 列相应单元格

Range(Cells(i, 1), Cells(i, 3)).Copy Cells(k, "j")

End If

Next

End Sub

筛选结果

例子2:简易工资条制作

参考代码:Sub vvvv()

Dim i As Long

Dim k As Long

k = 1 '行号计数

Range("j1:n100").Clear '清楚内容,方便更新数据

For i = 2 To 7 '遍历工资表

Range("a1:e1").Copy Cells(k, "j") '标题

Range(Cells(i, 1), Cells(i, 5)).Copy Cells(k + 1, "j") '复制工资数据

k = k + 3 '工资条间隔

Next

End Sub

例子3:复杂一点的高级筛选(循环嵌套)

要求:提取部门为A且销售额大于等于1500的数据+部门为C且销售额大于等于3000的数据。

参考代码:Sub bb()

Range("a1:c1").Copy Range("j1") '复制标题

k = 1 '记录行号

For x = 2 To 3 '遍历筛选条件要求的部门

'//先提取A部门符合要求的数据,再提取C部门符合要求的数据

For y = 2 To 13 '循环遍历表格数据

'Cells(x, "f") 为筛选条件的部门,Cells(x, "g")为筛选条件的销售额

If Cells(y, 1) = Cells(x, "f") And Cells(y, 3) >= Cells(x, "g") Then

k = k + 1 '计数,辅助输出数据到 j 列的单元格区域

'表格整行数据复制到 j 列相应单元格

Range(Cells(y, 1), Cells(y, 3)).Copy Cells(k, "j")

End If

Next

Next

End Sub

结果

希望大家可以愉快的入门VBA!

vba 跳出for循环_VBA简单入门08:For循环相关推荐

  1. vba 图表 大小 定位_VBA小技巧08: 调整工作表中所有图表尺寸并使其大小相同

    学习Excel技术,关注微信公众号: excelperfect 有时候,我们想要将工作表中的所有图表进行缩放操作,且要求这些图表调整后的尺寸大小相同.如果使用手动拖放调整,看似大小相同,实际可能有差异 ...

  2. vba打开txt文件_VBA基础入门(34)读取txt文本文件

    对于这样的txt文本文件,我们怎么一行一行去读取数据呢? #00001 65536 *00001 65536 说说常用的两种方法,一种是把txt文本文档读到Excel中,然后获取最大行数,做个循环来遍 ...

  3. python入门之控制结构-循环结构_Python 入门之控制结构 - 循环结构(一)

    第1关:While 循环与 break 语句 程序的第三大结构是循环结构.在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环.循环语句分为while循环.for循环.循环嵌套 ...

  4. python循环最简单的解释_python循环-通往简洁的必经之路

    接上回,讲一讲Python的循环. 老样子还是先说说C的循环: int i = 0; for(i = 0; i < 10; i++) { printf("%d\n", i) ...

  5. python事件循环_简单了解一下事件循环(Event Loop)

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  6. part4-2 流程控制二(循环结构,while、for循环,列表推导式、生成器推导式,常用工具函数,控制循环结构,4个简单实例)...

    循环语句在循环条件满足时,可反复执行某一段代码,这段被重复执行的代码称为循环体.在循环体中,需要在合适的时候把循环条件设置为假,从而结束循环:否则循环一直执行下去形成死循环.循环语句通常包含如下4个部 ...

  7. 一天学会shell语言,shell教程,shell简单入门,shell中文文档

        shell语言是一门linux系统下的工具语言,主要用于写一些linux系统下的操作命令,实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核.或者直接理解为shell命 ...

  8. 基于vue-cli、elementUI的Vue超简单入门小例子

    基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...

  9. JAVA Bean和XML之间的相互转换 - XStream简单入门

    JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...

最新文章

  1. div 隐藏_注入WordPress网站的隐藏垃圾邮件链接
  2. 如何知道刚刚插入数据库那条数据的id
  3. 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具
  4. VS Code Pettier设置换行最大宽度
  5. VTK:图片之ImageValueRange
  6. ECMAScript 6的解构赋值 ( destructuring assignment)
  7. 四大网络抓包神器,总有一款适合你~
  8. springcloud 服务调用的两种方式
  9. VS2010 + VS2008 快捷键
  10. Matlab 实现信号滤波
  11. StorageManager
  12. last-winner-airdrop
  13. Cannon.js -- 3d物理引擎
  14. centos 中英文输入法切换
  15. 【ospf路由计算(一类LSA-router、二类LSA-Network、三类LSA-sum-Net)】-20211228-30
  16. 百世集团公布2020年第一季度业绩 国际业务收入增长近两倍
  17. 驾驭你的“职场布朗运动”
  18. 解释器,一个交互式外壳
  19. 使用R语言抓取A股股价数据
  20. QT软件开发中的图标设置与好用的图标网站

热门文章

  1. 升级鸿蒙的十款手机,华为郑重宣布,第二批升级鸿蒙的十款手机,荣耀30系列上榜!...
  2. python 基础教程:对 property 属性的讲解及用法
  3. Python 5种不为人知的高级特征
  4. [python]函数默认参数顺序问题
  5. python得到一个10位随机数的方法及拓展
  6. m5310采用芯片 中移物联_联想首发瑞芯微最新智能物联芯片产品
  7. linux怎么连续退回上次目录?cd - 只能在两个目录间来回切换(autojump)(pushd popd dirs)
  8. 如何将VMware ubuntu虚拟机磁盘增长改成自分配(未成功)
  9. 【深度学习的数学】卷积神经网络的搭建
  10. pycharm报黄提示(黄色高亮警告):non-default parameter follows default parameter(定义时将没有默认值的参数放到了有默认值参数的后面)