分享

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

 CHENYUMEN 2024-04-27 发布于云南
我们来接着学习VBA的循环语句。

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

for 变量=初值 TO 终值

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

next

图片

来看个实例:

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

   图片    

代码如下:
Sub VBAfor语句()
Dim i As Integer  '声明变量 
For i = 3 To 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  '声明变量 

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应用与开发 


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多