Microsoft Lab
全部软件
Excel循环(Loop)约 4 分钟

Loop through Defined Range 遍历指定范围

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


完整 VBA 代码

Dim rng As Range, cell As Range

Set rng = Range("A1:A3")

For Each cell In rng
    cell.Value = cell.Value * cell.Value
Next cell

代码说明

  1. 声明 rng(要处理的范围)、cell(循环变量,代表范围里正在处理的那个单元格)两个 Range 对象
  2. 用 Set rng = Range("A1:A3") 把 A1 到 A3 这三个单元格赋给 rng(对象变量要用 Set 赋值)
  3. For Each cell In rng 会依次把 rng 里的每个单元格赋给 cell,循环体里对 cell 做的操作就是对当前这个单元格操作
  4. cell.Value = cell.Value * cell.Value 把当前单元格的值平方后写回原格
  5. Next cell 结束这一轮循环,继续处理下一个单元格

用 Selection 处理任意范围

如果不想把范围写死成 A1:A3,可以改成处理使用者当下选中的范围:

Set rng = Selection

这样不管使用者选中多大范围,程序都会用同一段循环逻辑处理。


怎么运行

先在工作表 A1:A3 输入数字,Alt+F11 打开 VBA 编辑器,把代码放进按钮点击事件,按 F5 或点命令按钮执行,A1:A3 的数字会被替换成各自的平方值。


学完你会

常见错误

  • 忘记用 Set 给 Range 对象赋值,直接写 rng = Range("A1:A3") 会报错——对象赋值必须加 Set
  • For Each 遍历的对象类型要跟循环变量类型一致(这里 cell 必须也是 Range),类型不匹配会报错
  • 用 Selection 时如果使用者没有先选中任何范围,或者选中了非数字的单元格,cell.Value * cell.Value 会报类型不匹配的错误

Sources

Blog / Website:

  1. Loop through Defined Range
只记在你的浏览器里,换设备不会同步。