excel学习库

excel表格_excel函数公式大全_execl从入门到精通

VBA入门——如何使用for循环进行遍历

我们来接着学习VBA的循环语句。

今天跟大家分享按次数循环进行遍历的用法。按次数循环语句格式如下:

for 变量=初值 TO 终值

循环体(重复执行的内容)

next

来看个实例:

在下列成绩表中 语文、数据、英语 中只要其中有一科及格就评定为合格,否则就不合格。

代码如下:

Sub VBAfor语句()
Dimi As Integer '声明变量 i
For i = 3To 12 '循环从3到12 ,如上图 第一位学生成绩在第3行,最后一个学生在第12行,这样就从3行 到12行 遍历。
If Range("d" & i) >=60 Or Range("e" & i) >= 60 Or
Range("f" &i) >= 60 Then Range("g" &i) = "合格"
Else Range("g" & i) = "不合格"
End If
上面黄色部分通过IF 结合 OR 判读当前行学生的三个成绩至少有一个>=60就“合格”,否则就“不合格”
Next
End Sub

上面程序如果学生不断追加 ,那么FOR 语句的终值就必须一直改。这时候我们就可以使用count 函数来获取可能变动的实际行数。count 函数在VBA 怎么写呢? 不会没关系,录制下宏就有了。如下图:

我们在D1单元格输入count(a:a) 并录制宏,就得到上图右侧的VBA代码。

Range("D1").Select

ActiveCell.FormulaR1C1 ="=COUNT(C[-3])"

这样D1 的值就可以随着学生的增减自动变动了。因为我们使用count(a:a)所以只对A列数值计数所以得到11 实际最后一个学生是在12行,没关系我们只要把D1+1就可以了。这样一来,上面的For 语句的终值就可以改成 D1+1 。

最终我们就可以把上面的 For i = 3 To 12

改成 For i = 3 To range("d1")+1

代码如下:

Sub VBAfor语句()
Dim i As Integer '声明变量 i
Range("D1").Select

ActiveCell.FormulaR1C1 = "=COUNT(C[-3])"

上面两句这部分是通过录制宏得来的,这两句得到了循环要用的终值。事实上这句可以写的更精简,有更好的写法,以后我们再聊吧,目前让初学者用录的方法是最简单实用的。有同学要问直接在D1单元格写函数就可以了。没错,但写在程序中可以保证D1单元格总是写上count(A:A),不怕D1的函数被删改。
另外也是要通过本案例让大家懂得录制宏获得代码,用到自己编的程序中。
For i = 3 To range("d1")+1 '循环从3到D1单元格值+1 ,如上图 第一位学生成绩在第3行,这样就从3行 到D1单元格值+1行 遍历。
If Range("d" & i) >= 60 Or Range("e" & i) >= 60 Or Range("f" & i) >= 60 Then Range("g" & i) = "合格"
Else Range("g" & i) = "不合格"
End If
上面黄色部分通过IF 结合 OR 判断当前行学生的三个成绩至少有一个>=60就“合格”,否则就“不合格”
Next
End Sub
总结:
1。For 初值 TO 终值 ...Next 当中的 初值终值 都是可以使用可变动的单元格或变量来表示。这样可以提高程序的灵活性。
2。对于初学者来说,不懂的部分代码使用录制宏的方式获取VBA代码是最高效的方法

今天就跟大家分享到这了,感谢各位小伙伴的支持请大家帮忙点赞、转发收藏、在看,我将创作更多更好的内容分享给大家关注我的公众号excel应用与开发

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接