Поделиться через


Проход по диапазону ячеек

При использовании Visual Basic часто требуется выполнить один и тот же блок операторов в каждой ячейке диапазона. Для этого необходимо объединить оператор цикла и один или несколько методов для идентификации каждой ячейки по отдельности и выполнить операцию.

Один из способов пройти по диапазону — использовать цикл For...Next со свойством Cells. С помощью свойства Cells можно заменить номера индексов ячеек счетчиком циклов (или другими переменными или выражениями). В следующем примере индекс строки заменяется переменной counter. Процедура проходит по диапазону ячеек C1:C20, присваивая значение 0 (ноль) каждому числу, абсолютное значение которого меньше 0,01.

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 (ноль) каждому числу, абсолютное значение которого меньше 0,01.

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 (ноль) каждому числу, абсолютное значение которого меньше 0,01.

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

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.