Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Создать копию строки
 
Помогите создать макрос добавления копии строки.
В ячейке "A4" и ниже по всему столбцу "А" должна быть кнопка "копировать строку" или просто знак "+"
Нажимая на ячейку "A4" ниже (в строке "5") должна появится копия строки "4", но с обнуленной ячейкой "I5".
Буду благодарен!
 
задайте макросу просто сочетание клавиш, зачем столько кнопок то...
Код
Sub ins()
rw = ActiveCell.Row
Rows(rw).Insert
Range("A" & rw & ":R" & rw).Value = Range("A" & rw + 1 & ":R" & rw + 1).Value
Range("I" & rw).ClearContents
End Sub
 
Даблклик по ячейке в столбце "A" ("Копировать строку") требуемой строки.
Чем шире угол зрения, тем он тупее.
 
Понял. Спасибо! Только у вас строка добавляется выше, а мне нужно чтобы скопированная строка добавлялась снизу и ячейка обнулялась в строке ниже
 
Хотя нет, у вас срока добавляется снизу, но ячейка очищается в верхней строке, а мне нужно в нижней
 
добавьте к rw  +1 в строке перед end sub
 
Цитата
Хотя нет, у вас срока добавляется снизу, но ячейка очищается в верхней строке, а мне нужно в нижней
Интересно, а как Вы это узнали?
Можно добавить строку (хоть выше, хоть ниже), затем очистить ячейку (хоть в добавленной строке, хоть в старой).
Файл смотрели?
Чем шире угол зрения, тем он тупее.
 
Извините, я отвечал yozhik
Ваше сообщение не увидел сразу. У вас еще круче  :)  (даблклик). Все работает

Цитата
yozhik написал: добавьте к rw  +1 в строке перед end sub
Огромное спасибо! Работает!
 
SAS888
Я не вижу код вашего макроса. А как мне тиражировать эту функцию на другие листы и другие книги?
 
Код макроса в модуле соответствующего листа.
Макрос срабатывает по событию двойного клика по ячейке:
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Count > 1 Then Exit Sub
    If Target.Column > 1 Then Exit Sub
    Application.ScreenUpdating = False
    Rows(Target.Row).Copy: Rows(Target.Row).Insert
    Cells(Target.Row, "I").Select: ActiveCell.ClearContents
End Sub
Для работы в нескольких (всех) листах книги, код макроса следует перенести в модуль книги, добавив (если нужно) ссылку на лист:
Код
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If Target.Count > 1 Then Exit Sub
    If Target.Column > 1 Then Exit Sub
    Application.ScreenUpdating = False
    Rows(Target.Row).Copy: Rows(Target.Row).Insert
    Cells(Target.Row, "I").Select: ActiveCell.ClearContents
End Sub
Изменено: SAS888 - 3 Май 2017 11:01:16
Чем шире угол зрения, тем он тупее.
 
Аналогичная задача, но у меня не расширяющийся диапазон. Есть 30 строк, первая как бы основная, в нее вводятся данные, затем нужно скопировать только значения первой строки на нижележащую строку, либо на 30 строку. Но без расширения таблицы. И так может быть добавлено 29 копий разных значений, без добавления новых строк. Кто знает подскажите пожалуйста. Примеры выше пробовал применить, но не смог настроить.  
 
SAS888, а если надо очистить несколько ячеек?
Могут они располагаться и подряд  и вразнобой.
По каждой ячейке добавлять код с соответствующей колонкой?
Код
    Cells(Target.Row, "I").Select: ActiveCell.ClearContents
 
Цитата
Сергей Эм написал:
По каждой ячейке добавлять код с соответствующей колонкой?
ни в коем случае. На крайняк так
Код
Cells(Target.Row, "I").ClearContents
для каждого, но еще лучше одним махом, и в зависимости от того как осуществляетс я подбор.
Например сотрет содержимое I1,I3 И I5.
Код
Union(Cells(1, "I"),Cells(3, "I"),Cells(5, "I")).ClearContents
 
БМВ, прошу прощения. Не правильно поставил вопрос.
Надо в строке очистить, допустим, B, C, D, E, I, K, L
Одной строкой можно?
 
Вопрос уже совсем не по теме,
 
БМВ,прошу прощения.

Мне нужно, чтобы в макросе сообщения 10 очистилась ни одна ячейка "I",
а ячейки  "B, C, D, E, I, K, L".

Необходимо создать новую. тему?
Я Вас правильно понял?
 
Сергей Эм, а Вы сами не видите разницы между задачами создать копию строки и очистить несмежный диапазон?
 
Цитата
Сергей Эм написал:
Необходимо создать новую. тему?Я Вас правильно понял?
да правильно, ибо Создать копию строки <> очистилась ни одна ячейка "I". Даже мой ответ  #13 уже на грани, хотя худо бедно можно притянуть к исправлению вышеуказанного кода.
 
БМВ, Премного благодарен!
 
БМВ, перечитал все сообщения. Я опять задал неправильный вопрос.

Помогите создать макрос добавления копии строки.
В ячейке "A4" и ниже по всему столбцу "А" должна быть кнопка "копировать строку" или просто знак "+"
Нажимая на ячейку "A4" ниже (в строке "5") должна появится копия строки "4", но с обнуленными ячейками "B, C, D, E, I, K, L".

Теперь это вопрос по данной теме?
 
Сергей Эм,  исходя из
Цитата
priskons написал:
должна появится копия строки "4", но с обнуленной ячейкой "I5".
то вы выкрутились :-)
Код
    RowNum = Target.Row
    Union(Range(Cells(RowNum, "I"), Cells(RowNum, "L")), Range(Cells(RowNum, "B"), Cells(RowNum, "E"))).ClearContents
Изменено: БМВ - 8 Апр 2018 12:14:01
 
БМВ,добавил Ваш код.
Вторую строку выделяет красным.
 
Сергей Эм, может хватит хитрить? Так ведь можно что угодно дополнить:
"Нажимая на ячейку "A4" ниже (в строке "5") должна появится копия строки "4" и автоматически перестроиться диаграмма"
Выделенное жирным добавлено мной. А что? - вопрос ведь относится к моей таблице?
Неужели так трудно создать тему про очистку диапазона?
 
Возможно до последнего исправления успели скопировать. Я одну скобку пропустил и исправил.
 
У вас такой живой диалог)) Подскажите если можете и мне.  
 
БМВ, всё хорошо! Большое спасибо!
Замечания в свой адрес учту.
Страницы: 1
Читают тему (гостей: 1)