Страницы: 1
RSS
Поиск ячейки vba со смещением
 
Добрый день.
В vba только начинаю, прошу помочь!!!
Есть задача найти ячейки из массива {Доп код}, при нахождении не пустой, добавить строку ниже, скопировать на новую строку вниз
под "Код" и элементы с D19 E19 F19 .... скопировать в D20 E20 F20 .... Пока получилось только с помощью макрорекордера записать
поиск по одной ячейке, вернее не поиск а выделение. Подскажите куда копать.
КодДоп код
96121233962424242 /
96121233
96121233
96121233
96121233
96121233
96839303
96838383
96234222
9624242396651330 / 963748373
96383832
Заранее спасибо всем откликнувшимся!!!
Изменено: Bjbris - 27.07.2014 19:06:43
 
Начните копать с нормального объяснения.
Цитата
Bjbris пишет: найти ячейки из массива {Доп код}
Где их нужно найти?
 
Ячейки нужно найти из столбца С(х) {Доп Код} при нахождении первой не пустой переместить в В(х-1) то есть под низ В(х)
 
Вы свой код пробовали запустить. В последних строках стало понятней. Надо пройтись по колонке "С" и если есть в ячейке значение то добавить строку под ним и переместить его в созданную строку в колонку "В", если несколько значений, соответственно и столько добавить строк? Разделитель всегда "/"?
 
Да разделитель есть, то есть если 2 значения, то  2 строки. Но то будет потом. Сейчас бы разобраться с методом Find,
и добавлением, все чтобы было в цикле, а потом уже дальнейшие действия.
 
Вот что получилось сделать с циклом для поиска, но он как-то не правильно работает
Код
Dim iRange As Range
Dim iRow As Long
Dim iFind As String
iFind = "*"  'chto ishem
    Set iRange = Columns("C:C" ) .Find(What:=iFind)
    If iRow = iRange.Row Then
        MsgBox "Ячейка " & iRow
    ElseIf iRange Is Nothing Then
        MsgBox "Ничего не найдено"
    Else
        MsgBox "Else"
    End If
Изменено: Bjbris - 25.08.2014 16:59:48
 
И где здесь цикл?
 
Да наверное надо завязывать на сегодня. Извиняюсь, конструкция IF ELSE. Для наглядности с выводом в окно. Я же говорю, только начинаю.
Изменено: Bjbris - 27.07.2014 22:35:52
 
Откройте справку по Find - там как раз пример поиска с продолжением.
 
Большое спасибо!!! Немножко подправил ошибки и все заработало.
Натолкните на мысль как в цикл ввести добавление строки ниже, под найденной
Код
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
А потом найденное значение

Код
Find("*", LookIn:=xlValues)
 
Переместить в добавленное поле в колонку В
Изменено: Bjbris - 27.07.2014 22:52:54
 
Как вариант, без Find'ов всяких

Скрытый текст
 
Спасибо ОГРОМНОЕ!!!
 
 
Подскажите кто знает, а как этот макрос применить к открывающемуся файлу. То есть я делаю кнопку в исполняемом файле, запускаю макрос, он открывает файл, а потом пробегает по строчкам. Открытие я сделал:
Код
fileToOpen = Application.GetOpenFilename _
        ("Files (*.xls), *.xls,Files (*.xlsx), *.xlsx")
            If fileToOpen <> False Then
                MsgBox "Вы открываете файл " & fileToOpen
                Workbooks.Open fileToOpen
            End If
 
А как внутренний цикл применить?
 
Цитата
Bjbris пишет:
А как внутренний цикл применить?
а у вас открытый файл становится активным. Соответственно, добавьте тот код к своему и проверьте, работает ли макрос после открытия файла без особых изменений.
F1 творит чудеса
 
Цикл перебора ставлю после кода открытия, файл открывается, но не выполняет цикл, описанный выше
 
В принципе заставить работать не сложно, но есть один принципиальный вопрос - какой лист хотите обрабатывать? Какой попало?
Изменено: Hugo - 01.08.2014 16:22:36
 
В открытой книге первый лист. Он там один
 
Скрытый текст
Изменено: Hugo - 01.08.2014 17:12:03
 
Все отлично РаботаЕТ!!! Спасибо Hugo. Были бы плюсы поставил бы.
Страницы: 1
Наверх