vba 跳出for循环_VBA简单入门08:For循环
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循环相关推荐
- vba 图表 大小 定位_VBA小技巧08: 调整工作表中所有图表尺寸并使其大小相同
学习Excel技术,关注微信公众号: excelperfect 有时候,我们想要将工作表中的所有图表进行缩放操作,且要求这些图表调整后的尺寸大小相同.如果使用手动拖放调整,看似大小相同,实际可能有差异 ...
- vba打开txt文件_VBA基础入门(34)读取txt文本文件
对于这样的txt文本文件,我们怎么一行一行去读取数据呢? #00001 65536 *00001 65536 说说常用的两种方法,一种是把txt文本文档读到Excel中,然后获取最大行数,做个循环来遍 ...
- python入门之控制结构-循环结构_Python 入门之控制结构 - 循环结构(一)
第1关:While 循环与 break 语句 程序的第三大结构是循环结构.在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环.循环语句分为while循环.for循环.循环嵌套 ...
- python循环最简单的解释_python循环-通往简洁的必经之路
接上回,讲一讲Python的循环. 老样子还是先说说C的循环: int i = 0; for(i = 0; i < 10; i++) { printf("%d\n", i) ...
- python事件循环_简单了解一下事件循环(Event Loop)
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- part4-2 流程控制二(循环结构,while、for循环,列表推导式、生成器推导式,常用工具函数,控制循环结构,4个简单实例)...
循环语句在循环条件满足时,可反复执行某一段代码,这段被重复执行的代码称为循环体.在循环体中,需要在合适的时候把循环条件设置为假,从而结束循环:否则循环一直执行下去形成死循环.循环语句通常包含如下4个部 ...
- 一天学会shell语言,shell教程,shell简单入门,shell中文文档
shell语言是一门linux系统下的工具语言,主要用于写一些linux系统下的操作命令,实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核.或者直接理解为shell命 ...
- 基于vue-cli、elementUI的Vue超简单入门小例子
基于vue-cli.elementUI的Vue超简单入门小例子 这个例子还是比较简单的,独立完成后,能大概知道vue是干嘛的,可以写个todoList的小例子. 开始写例子之前,先对环境的部署做点简单 ...
- JAVA Bean和XML之间的相互转换 - XStream简单入门
JAVA Bean和XML之间的相互转换 - XStream简单入门 背景介绍 XStream的简介 注解简介 应用实例 背景介绍 我们在工作中经常 遇到文件解析为数据或者数据转化为xml文件的情况, ...
最新文章
- div 隐藏_注入WordPress网站的隐藏垃圾邮件链接
- 如何知道刚刚插入数据库那条数据的id
- 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具
- VS Code Pettier设置换行最大宽度
- VTK:图片之ImageValueRange
- ECMAScript 6的解构赋值 ( destructuring assignment)
- 四大网络抓包神器,总有一款适合你~
- springcloud 服务调用的两种方式
- VS2010 + VS2008 快捷键
- Matlab 实现信号滤波
- StorageManager
- last-winner-airdrop
- Cannon.js -- 3d物理引擎
- centos 中英文输入法切换
- 【ospf路由计算(一类LSA-router、二类LSA-Network、三类LSA-sum-Net)】-20211228-30
- 百世集团公布2020年第一季度业绩 国际业务收入增长近两倍
- 驾驭你的“职场布朗运动”
- 解释器,一个交互式外壳
- 使用R语言抓取A股股价数据
- QT软件开发中的图标设置与好用的图标网站
热门文章
- 升级鸿蒙的十款手机,华为郑重宣布,第二批升级鸿蒙的十款手机,荣耀30系列上榜!...
- python 基础教程:对 property 属性的讲解及用法
- Python 5种不为人知的高级特征
- [python]函数默认参数顺序问题
- python得到一个10位随机数的方法及拓展
- m5310采用芯片 中移物联_联想首发瑞芯微最新智能物联芯片产品
- linux怎么连续退回上次目录?cd - 只能在两个目录间来回切换(autojump)(pushd popd dirs)
- 如何将VMware ubuntu虚拟机磁盘增长改成自分配(未成功)
- 【深度学习的数学】卷积神经网络的搭建
- pycharm报黄提示(黄色高亮警告):non-default parameter follows default parameter(定义时将没有默认值的参数放到了有默认值参数的后面)