Как перемещаться по диапазону с помощью vba?
Чтобы перебрать диапазон в VBA, вам нужно использовать опцию «Для каждого цикла». Используя этот цикл, вы можете написать код, в котором вы указываете VBA пройти через каждую ячейку в диапазоне, столбце или строке и выполнить определенное действие.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("A1:A10").Cells iCell.Value = "Yes" Next iCell End Sub
Вот шаги для прогулки по пляжу:
- Сначала объявите переменную, которая будет использоваться в качестве ячейки диапазона для цикла.
- После этого запустите цикл «Для каждого» и используйте переменную «iCell» для представления каждой ячейки диапазона во время цикла.
- Далее вам нужно написать строку кода для выполнения действия над каждой ячейкой, в которой мы зацикливаем диапазон.
- В конце завершите код цикла.
Прокрутите весь столбец и одну строку с помощью VBA.
Таким же образом вы можете перебирать каждую ячейку подряд, используя следующий код, который идентичен коду, который мы использовали в предыдущем примере, единственное отличие — это указанный нами диапазон.

Примечание. Прежде чем просмотреть весь столбец или строку, вы должны понимать, что цикл может занять некоторое время, и ваш Excel может зависнуть на несколько минут.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("A:A").Cells iCell.Value = "Yes" Next iCell End Sub
Таким же образом вы можете использовать полную строку в качестве диапазона для прохождения.
Sub vba_loop_range() Dim iCell As Range For Each iCell In Range("1:1").Cells iCell.Value = "Yes" Next iCell End Sub
Циклическое перебор динамического диапазона
А если вы хотите перебрать динамический диапазон ячеек, обратитесь к следующему коду.

Sub vba_dynamic_loop_range() Dim iCell As Range Dim iRange1 As String Dim iRange2 As String Dim rangeName As String iRange1 = ActiveCell.Address iRange2 = ActiveCell.Offset(5, 5).Address rangeName = iRange1 & ":" & iRange2 For Each iCell In Range(rangeName).Cells iCell = "Yes" Next iCell End Sub