Страница 1 из 1

Перебор диапазона ячеек в цикле.

Добавлено: 21 апр 2013, 16:47
Preol
Всем добрый день!
Не умею строить циклы. Пожалуйста помогите организовать перебор ячеек в 1 строке до первой пустой ячейки.

Сам код:

Код: Выделить всё

Sub PRoba()
Dim FinalRow As Long

FinalRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

[B1].Select
      Set ColValue = ActiveCell
        C_ = ColValue.Column
    Set MyRange = Range(ColValue.Offset(1), Cells(FinalRow, C_))
     MyRange.Replace What:=111, Replacement:=ColValue, LookAt:=xlPart

[C1].Select
      Set ColValue = ActiveCell
        C_ = ColValue.Column
    Set MyRange = Range(ColValue.Offset(1), Cells(FinalRow, C_))
     MyRange.Replace What:=111, Replacement:=ColValue, LookAt:=xlPart

[D1].Select
      Set ColValue = ActiveCell
        C_ = ColValue.Column
    Set MyRange = Range(ColValue.Offset(1), Cells(FinalRow, C_))
     MyRange.Replace What:=111, Replacement:=ColValue, LookAt:=xlPart

'и т.д. ....
End Sub

Re: Перебор диапазона ячеек в цикле.

Добавлено: 21 апр 2013, 17:48
pashulka
Без обид, но зачем строить циклы не разобравшись с остальным бредом ?

1) Вы ищите во всех ячейках - данные ячеек самой первой строки, при этом, сам поиск осуществляется по столбцам, и в результате находите активную ячейку, проще говоря ActiveCell и ColValue это и одна и та же ячейка. Нафига нужен такой поиск ... вот если бы Вы планировали искать данные первой строки в первом столбце ... а так.
2) Зачем нужна замена 111 в ячейках, где наличествует формула, возвращающая либо "ОК" либо ""

Re: Перебор диапазона ячеек в цикле.

Добавлено: 21 апр 2013, 19:14
pashulka
Preol, Может быть Вы просто скажите что должен делать макрос ;) применительно к выложенному примеру, а опубликованный код, останется, не при делах.

Re: Перебор диапазона ячеек в цикле.

Добавлено: 21 апр 2013, 19:33
Preol
pashulka писал(а): 1) ActiveCell и ColValue это и одна и та же ячейка.

ОК. Исправил... в меру своих познаний :)
pashulka писал(а): 2) Зачем нужна замена 111 в ячейках, где наличествует формула, возвращающая либо "ОК" либо ""

Формула просто как пример, которая показывает что в выделенном диапазоне будет происходить поиск и замена значения, обозначенного в первой строке столбца.

Re: Перебор диапазона ячеек в цикле.

Добавлено: 21 апр 2013, 19:42
Preol
pashulka писал(а):Preol, Может быть Вы просто скажите что должен делать макрос ;) применительно к выложенному примеру, а опубликованный код, останется, не при делах.

Макрос должен изменить значение в формуле (в примере 111) для каждого столбца, на значение находящееся в 1 ячейке столбца. Диапазон по строкам и столбцам - динамический.
На самом деле, в формуле (реальной, а не в примере) будет заменяться название файла откуда с помощью ВПР будут получены данные...

Re: Перебор диапазона ячеек в цикле.

Добавлено: 21 апр 2013, 20:04
pashulka
Если Вы уверены, что обрабатывать нужно именно до первой непустой ячейки в столбце и строке, т.е. в первом столбце, и в первой строке данные обязательно заполняются последовательно, то :

Код: Выделить всё

Private Sub Test()
    Dim iMaxRow&, iMaxColumn%, iColumn%
    
    iMaxRow = [A2].End(xlDown).Row - 1
    iMaxColumn = [B1].End(xlToRight).Column
    
    Application.ScreenUpdating = False
    For iColumn = 2 To iMaxColumn
        Cells(2, iColumn).Resize(iMaxRow).Replace "111", Cells(1, iColumn)
    Next
    Application.ScreenUpdating = True
End Sub

Re: Перебор диапазона ячеек в цикле.

Добавлено: 21 апр 2013, 20:09
Preol
pashulka
Спасибо БОЛЬШОЕ!!! То что надо! :)