在单元格区域中循环

使用 Visual Basic 时,经常需要对某一单元格区域内的每个单元格运行同一段语句。为达到这一目的,可组合循环语句和一个或多个方法来标识每个单元格,一次针对一个单元格,并执行该操作。

在单元格区域中循环的一种方法是将 For...Next 循环语句与 Cells 属性配合使用。使用 Cells 属性时,可用循环计数器(或其他变量或表达式)来替代单元格索引编号。下例中,变量 counter 代替了行号。此过程将在单元格区域 C1:C20 中循环,将所有绝对值小于 0.01 的数字都设置为 0(零)。

Sub RoundToZero1()
    For Counter = 1 To 20
        Set curCell = Worksheets("Sheet1").Cells(Counter, 3)
        If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
    Next Counter
End Sub

在单元格区域中循环的另一种简便方法是使用 For Each...Next 循环语句和由 Range 属性指定的单元格集合。在每一次循环过程中,Visual Basic 都为下一个单元格自动设置一个对象变量。下述过程在单元格区域 A1:D10 中循环,将所有绝对值小于 0.01 的数字都设置为 0(零)。

Sub RoundToZero2()
    For Each c In Worksheets("Sheet1").Range("A1:D10").Cells
        If Abs(c.Value) < 0.01 Then c.Value = 0
    Next
End Sub

如果不知道要循环的单元格区域的边界,可用 CurrentRegion 属性返回活动单元格周围的区域。例如,下述过程在工作表上运行时,将在活动单元格周围的区域内循环,将所有绝对值小于 0.01 的数字都设置为 0(零)。

Sub RoundToZero3()
    For Each c In ActiveCell.CurrentRegion.Cells
        If Abs(c.Value) < 0.01 Then c.Value = 0
    Next
End Sub