MICROSOFT

EP02. “Loop through Entire Column 遍历整列”

首页 Microsoft 工具 Excel · VBA · Loop · EP02
约 5 分钟· #EP02#Excel#Loop
🔒 登录后可标记已读
  • 这篇教怎么用 For 循环搭配 Rows.Count 遍历一整列所有可能的行,不用自己猜数据到底有多少行
  • 场景:把 A 列所有小于 D2 指定值的数字标成红色
  • 前置知识:EP01 的循环概念和 If Then 判断
  • 学完能理解为什么处理「整列」时要用 Rows.Count,而不是写死一个数字

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等),Excel 2007 之后工作表最多有 1,048,576 行。


完整 VBA 代码

Dim i As Long

Columns(1).Font.Color = vbBlack

For i = 1 To Rows.Count

    If Cells(i, 1).Value < Range("D2").Value And Not IsEmpty(Cells(i, 1).Value) Then
        Cells(i, 1).Font.Color = vbRed
    End If

Next i

代码说明

  1. 声明变量 iLong 而不是 Integer——因为 Long 的容量比 Integer 大,而工作表最多有超过一百万行,Integer 装不下这么大的数字
  2. Columns(1).Font.Color = vbBlack 先把 A 列所有单元格的字体颜色重置为黑色,避免上一次运行留下的红色标记干扰这次结果
  3. For i = 1 To Rows.CountRows.Count(当前 Excel 版本工作表的总行数)当循环上限,不管用的是哪个 Excel 版本,这行代码都能遍历到最后一行
  4. If Cells(i, 1).Value < Range("D2").Value And Not IsEmpty(Cells(i, 1).Value) Then 判断这一行 A 列的值是否小于 D2 的值,同时用 Not IsEmpty(...) 排除空白单元格(空单元格会被忽略,不参与比较)
  5. 符合条件的单元格,字体颜色改成红色

怎么运行

在 D2 输入比较基准值,A 列填一些数字,Alt + F11 打开 VBA 编辑器执行代码(或点命令按钮),A 列所有小于 D2 值的数字会变成红色字体,其余保持黑色。

[截图:运行宏后 A 列的效果,小于 D2 基准值的数字变成红色字体,其余维持黑色]


学完你会

  • ✅ 用 Rows.Count 遍历整列,不用猜数据有多少行
  • ✅ 知道遍历整列的计数器要用 Long 而不是 Integer
  • ✅ 用 IsEmpty 排除空白单元格,避免误判

常见错误

  • Integer 声明循环变量而不是 Long——工作表行数超过 32767(Integer 上限)就会溢出报错,遍历整列必须用 Long
  • 忘记先把颜色重置成黑色(Columns(1).Font.Color = vbBlack),重复执行程序后,D2 值改变了,但之前标红的单元格如果不再符合条件也不会自动变回黑色,久而久之标记会不准确
  • 忘记加 Not IsEmpty(...) 判断,空白单元格在 VBA 里会被当作数值 0 参与比较,如果 D2 输入负数,所有空白格都会被误判成"小于 D2"而被标红

Sources

Blog / Website:

  1. Loop through Entire Column