vba结束本次循环进⾏下次_我的VBA学习之旅(六)——程序
结构之循环结构
Tina:我的VBA学习之旅(五)——程序结构之选择/分⽀结构+判断z huanlan.zhihu
今天兴致⽐较⾼,⼜分享了下循环,单循环和双循环,多循环⾃⼰搞定,同样的思路
栗⼦还是⽤前⼀篇的栗⼦吧
现在是只有8个,Ctrl C/V起来还较为⽅便,如果到了100个呢,如果到了10000个呢,重复相同的动作,甚⾄⽐⽤函数还慢,那学VBA 有什么意义呢?
所以把上次的改写成循环就好了
怎么改写呢,先来看看分析下数据
我们的循环要从第2⾏开始,然后是第3⾏,第4⾏,直到第9⾏,所以循环次数是8次,每次都判断⼀个⼈的成绩,并在C列中填⼊是否需要补考
循环结构主要有两种,⼀种是for ... next,还有⼀种是do ... loop
'for 结构
for <;变量> = <;循环开始值> to <;循环结束值>
<;过程>
next (<;变量>)
'do 结构
do (while <;条件>)
<;过程>
<;变量改变>
loop (until <;条件>)
先来for ... next
先定义⼀个变量i,然后码代码
For i = 2 To 9
If Cells(i, 2) >= 60 Then
Cells(i, 3) = "否"
Else
vba自学好学吗Cells(i, 3) = "是"
End If
Next i
细⼼的童鞋发现了,这⾥⽤的不是Range,⽽是Cells,Cells⽤于操作不知道具体单元格,但是知道在哪⼀⾏哪⼀列时⽐较⽅便,如果⼀定要⽤Range的话,可以⽤下⾯的格式
For i = 2 To 9
If range("B" & i) >= 60 Then
range("C" & i) = "否"
Else
range("C" & i) = "是"
End If
Next i
然后按F5运⾏,
⼀下⼦就出来了有没有!有没有感觉上⼀次Ctrl C/V完全是⽩费⼒⽓啊
不不,并没有,上⼀次的Ctrl C/V是给你⼀次深刻的体验,可以⽤循环结构的绝对不要⽤顺序结构/doge
玩了⼀个不尽兴,再来个do loop
do loop的循环,,讲道理,我不是特别爱⽤,因为总是忘记定义初始值,或者忘记改变变量的值,再加上我是个⼀码好代码就不设置断点直接F5的⼈,所以经常出现,循环死了的情况,然后不得不强制退出程序,重新打开,不过,,这个东西还是要分享⼀下的
do loop循环有没有⽤呢,不知⼤家发现没,上⾯的for next循环⾥直接定好了i是值是从2循环到9的,就是已经知道次数了,,如果我不知道次数,那do loop就⽐较好了
上⾯的do loop⾥⾯还有括号括起来了while和until两种
do while ... loop的结构是指,当满⾜条件时,继续循环
⽽do ... loop until的结构是指,先进⾏循环,然后判断条件,如果满⾜条件了,则结束循环,本例的⽤以上两种写分别是
i = 2
Do While i < 10
If Cells(i, 2) >= 60 Then
Cells(i, 3) = "否"
Else
Cells(i, 3) = "是"
End If
i = i + 1
Loop
和
i = 2
Do
If Cells(i, 2) >= 60 Then
Cells(i, 3) = "否"
Else
Cells(i, 3) = "是"
End If
i = i + 1
Loop Until i >= 10
区别就在对i值的判断上,第⼀个是当i的值⼩于10时进⾏循环,⽽第⼆个是当i的值⼤于等于10时退出循环,当然,这⾥也是知道循环最后到哪⾥的,如果真的不知道最后⼀⾏在哪⾥,还可以⽤
do while cells(i,2)<>""
或
loop until cells(i,2)=""
来实现
双重循环
上⾯是单循环,接下来玩个难度⾼点的双重循环,什么是双重循环呢,就是循环⾥套循环
那么就来,把表格⾥⾯的所有成绩全替换成“及格”和“不及格”
我们的思路是什么呢
⼀、判断A童鞋的成绩1有没有及格,填⼊相应的等级
⼆、判断A童鞋的成绩2有没有及格,填⼊相应的等级
三、对下⼀个童鞋的成绩进⾏判断
for <⾏循环变量> = <⾏循环变量开始值> to <⾏循环变量结束值>
for <;列循环变量> = <;列循环变量开始值> to <;列循环变量结束值>
<;循环体>
next <;列循环变量>
next <⾏循环变量>
这是个双重循环,第⼀重对⾏进⾏循环,第⼆重对列进⾏循环
所以写成代码就是
For i = 2 To 9
For j = 2 To 3
If Cells(i, j) >= 60 Then Cells(i, j) = "及格" Else Cells(i, j) = "不及格"
Next j
Next i
运⾏结果和原始成绩
动动脑筋,把上⾯的for next循环改写成do loop循环吧
现在程序⾥⾯的三种结构都学会了,可以开始把这三种结构嵌套来实现⾃⼰需要的功能了
下次该分享什么呢,,⽤VBA实现对Excel的操作?我再纠结纠结
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论