Страницы: 1
RSS
Перечисление нескольких диапазонов в цикле For
 
Добрый день, у меня имеется код, который проходит по строке и перетаскивает формулы из верхней строки, если они там есть
Код
For Stolb = 1 To LastStolb
          If Cells(ActiveCell.Row, Stolb).HasFormula Then
             Cells(ActiveCell.Row + 1, Stolb).FillDown
          End If
Next
Так вот суть в чем, мне нужно для разных диапазонов выполнить одно и то же условие, Не хочется каждый раз прописывать все 5 строк, можно как-то диапазоны перечислить? Пример (но так не работает):
Код
For Stolb = 1 To 2, 2 To 5, 5 To 7, 7 To LastStolb
          If Cells(ActiveCell.Row, Stolb).HasFormula Then
             Cells(ActiveCell.Row + 1, Stolb).FillDown
          End If
Next
Изменено: Gogo Pav - 24.01.2022 16:51:48
 
Добрый день. Ну например через массив можно:
Код
Sub test()
    Dim arrRow(3, 1), j As Integer
    Dim Stolb As Long, flgRow As Boolean
    
    arrRow(0, 0) = 1: arrRow(0, 1) = 2
    arrRow(1, 0) = 4: arrRow(1, 1) = 5
    arrRow(2, 0) = 7: arrRow(2, 1) = 9
    arrRow(3, 0) = 11: arrRow(3, 1) = LastStolb
    
    For Stolb = 1 To LastStolb
        rflg = False
        For j = LBound(arrRow, 1) To UBound(arrRow, 1)
            If Stolb >= arrRow(j, 0) And Stolb <= arrRow(j, 1) Then flgRow = True
        Next j
        If flgRow And Cells(ActiveCell.Row, Stolb).HasFormula Then
            Cells(ActiveCell.Row + 1, Stolb).FillDown
        End If
    Next r
End Sub

PS диапазоны поставил свои, а то у вас они все перекрываются
 
Код
For Each Stolb In Array(1, 2, 5, 6)
          If Cells(ActiveCell.Row, Stolb).HasFormula Then
             Cells(ActiveCell.Row + 1, Stolb).FillDown
          End If
Next
 
Ну и ещё вариант написать процедуру с параметром. Вызвать её 5 раз.
Правда из примера кода я так и не понял что там за диапазон будет меняться, поэтому без примера процедуры.
Страницы: 1
Наверх