四时宝库

程序员的知识宝库

过程导向型循环For Next

循环,是任何程序进行结构控制的重要组件。可以这么说,在处理循环上,计算机相对于手工操作是最明显的。我们的重复操作的处理,大部分可以用循环来实现。

假想一下,我们有这样一张表格,上面记录了每个员工2016年的销售业绩(销售狗伤不起),老板拿到表后要根据销售业绩来进行年终评级。他应该怎么做?

这个时候,我们一般的做法是:

找到第一个员工→查看业绩 → 评级

找到第二个员工→查看业绩 → 评级

找到第三个员工→查看业绩 → 评级

如果人数少的话,当然老板可以大笔一挥,随便写写便搞定。但如果人数有100个要来评定呢?

这个时候就要派循环上场了。本节我们重点介绍For循环。 我们把我们上面的思维再抽象一下,就会变成:

对每一个员工,进行查看业绩,评级。

使用上For语句,就是

For 一个员工 
 对业绩进行评级 
下一个员工

这样我们就学会了写最简单的for循环语句了,标准的写法如下:

For i = 初始值 到 终止值
 statement
next

注意 For一定要配合Next一起使用,就像是瓶子和瓶盖一样。

举例,如果想把一个空表格中A1到A100单元格的值等他的行号,用for循环怎么写?

Sub fill_row_number()
Dim i As Integer
For i = 1 To 100
 Range("a" & i).Value = i '赋值操作
Next
End Sub

如果要把A1,A2,A5一直到A99的单元格赋值怎么处理?

这里就要用到 for 循环的step语句。step后会指定一个步长,不指定则默认为1。

例如,以下语句就把A列奇数行涂成红色。

Sub fill_color()
Dim i%
For i = 1 To 100 Step 2
 Range("a" & i).Interior.Color = vbRed
Next
End Sub

注 dim i% 是dim i as integer的简写

得到的结果如下:


好了,我们学会了从小到大计步,那从大到小怎么做? 举一反三,我们把Step值设置为-1就可以了。

从大到小进行处理,尤其适用于要删除行和列上。如果从小到大删除,excel会自动平移单元格,行号会进行重排,程序执行不会达到预期效果。从大到小就可以避免。

讲到这里,我们已经了解了For语句的常用用法。但值得一提的是,一般for语句试用与我们已经知道需要循环多少次的情况。A哥称之为过程导向循环。

但有些情况下,我们为了达到效果,不清楚程序需要执行多少次,只要达到最后效果就可以。例如,我要把给定文件夹下所有的文件都找出来。当然这也需要使用循环,A哥把这种方式成为结果导向型循环。下一节,我们将对这类循环进行讲解。

总结一下

  • For循环的基本概念
  • For循环的使用以及参数设置

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接