从0学Excel VBA编程 第8篇:循环 For 语句——让代码重复干活不嫌累
在前面几篇,我们学会了让代码"做一次"事情。今天我们来学习:如何让代码"重复做很多次",而自己只写一行。
学习目标
知识点精讲
1. 什么是循环?
循环 = 让同一段代码重复执行多次。
比如你要在 A1 到 A10 这十个单元格里分别写入 1、2、3……10。没有循环的话,你要写 10 行代码:
Range("A1").Value = 1Range("A2").Value = 2Range("A3").Value = 3'……写到 A10
有了循环,只需要 3 行:
For i = 1 To 10 Range("A" & i).Value = iNext i
2. For...Next 基本结构
For 计数器 = 起始值 To 结束值 ' 要重复执行的代码Next 计数器
计数器通常用字母 i(代表 index,序号的意思)。
程序会这样执行:
3. 用 Step 控制步长
默认情况下,计数器每次加 1。如果你希望每次加 2、加 5,或者倒着数,就要用到 Step。
For i = 1 To 10 Step 2 ' i 依次为 1, 3, 5, 7, 9Next i
For i = 10 To 1 Step -1 ' i 依次为 10, 9, 8, ……, 1Next i
4. 循环里怎么定位单元格?
我们常常把 i 和单元格地址拼起来:
Range("A" & i).Value = i
& 是字符串连接符号。当 i = 3 时,"A" & i 就等于 "A3"。
实战案例
案例 1:给 A 列填入 1 到 10 的序号(简单)
功能说明:在 A1:A10 单元格中依次填入 1、2、3……10。
Sub 填入序号() Dim i As Integer For i = 1 To 10 Range("A" & i).Value = i Next i MsgBox "序号已填好!"End Sub
操作步骤:
案例 2:用 Step 2 在 B 列填入奇数(中等)
功能说明:在 B1:B5 中填入 1、3、5、7、9,体会 Step 2 的用法。
Sub 填入奇数() Dim i As Integer Dim rowNum As Integer rowNum = 1 For i = 1 To 9 Step 2 Range("B" & rowNum).Value = i rowNum = rowNum + 1 Next i MsgBox "B 列奇数已填好!"End Sub
操作步骤:
- 试着把
Step 2 改成 Step 3,看看结果有什么不同
案例 3:批量给成绩表加 5 分(实用小案例)
功能说明:假设 C2:C11 是 10 个学生的成绩,给每个人都加 5 分,但最高不超过 100 分。
Sub 成绩加分() Dim i As Integer Dim score As Integer For i = 2 To 11 score = Range("C" & i).Value score = score + 5 If score > 100 Then score = 100 End If Range("C" & i).Value = score Next i MsgBox "已给 10 位学生各加 5 分!"End Sub
操作步骤:
- 在 Excel 的 C2:C11 区域手动输入一些分数(比如 78、85、92、60 等)
- 检查 C2:C11,每个分数都增加了 5 分,且没有超过 100 的
这个案例用到了上一篇学的 If 语句。你会发现:把循环和判断结合起来,就能解决很多实际办公问题。
本篇小结
For...Next 让同一段代码重复执行,格式是:
For i = 起始 To 结束 ' 重复做的事Next i
下一篇内容预告
第9篇:循环 Do While 语句——不知道要循环多少次时怎么办
For 循环适合"知道要循环几次"的场景。如果一开始不知道要循环几次,而是"满足某个条件就一直做",那就要用到 Do While 循环了。我们下一篇见!