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

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Preol
Сообщения: 4
Зарегистрирован: 19 апр 2013, 20:30

Всем добрый день!
Не умею строить циклы. Пожалуйста помогите организовать перебор ячеек в 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
Вложения
ПримерOL2..zip
(12.19 КБ) 37 скачиваний
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Без обид, но зачем строить циклы не разобравшись с остальным бредом ?

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

Preol, Может быть Вы просто скажите что должен делать макрос ;) применительно к выложенному примеру, а опубликованный код, останется, не при делах.
Preol
Сообщения: 4
Зарегистрирован: 19 апр 2013, 20:30

pashulka писал(а): 1) ActiveCell и ColValue это и одна и та же ячейка.

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

Формула просто как пример, которая показывает что в выделенном диапазоне будет происходить поиск и замена значения, обозначенного в первой строке столбца.
Preol
Сообщения: 4
Зарегистрирован: 19 апр 2013, 20:30

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

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

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

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

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
Preol
Сообщения: 4
Зарегистрирован: 19 апр 2013, 20:30

pashulka
Спасибо БОЛЬШОЕ!!! То что надо! :)
Ответить