Как перемещаться по диапазону с помощью 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

Вот шаги для прогулки по пляжу:

  1. Сначала объявите переменную, которая будет использоваться в качестве ячейки диапазона для цикла.
    loop-through-range
  2. После этого запустите цикл «Для каждого» и используйте переменную «iCell» для представления каждой ячейки диапазона во время цикла.
    use-icell-variable
  3. Далее вам нужно написать строку кода для выполнения действия над каждой ячейкой, в которой мы зацикливаем диапазон.
    write-a-line-of-code
  4. В конце завершите код цикла.
    end-the-code-for-a-loop

Прокрутите весь столбец и одну строку с помощью 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