Добрый день! Менеджер, на листе "Накладная" - ручками выбирает диапазон, нажимает кнопку "Внести в историю заказов" после чего нужно, что бы выбранный диапазон копировался в лист "История заказов" - реализовано, через копирование строк, а нужно через копирование диапазона, причем копирование должно быть со сдвигом на 2 столбца... ни как не могу разобраться с этим. Так же вопрос о том как назначить скопированному диапазону рамку из толстых линий по краям диапазона
Добрый день! Менеджер, на листе "Накладная" - ручками выбирает диапазон, нажимает кнопку "Внести в историю заказов" после чего нужно, что бы выбранный диапазон копировался в лист "История заказов" - реализовано, через копирование строк, а нужно через копирование диапазона, причем копирование должно быть со сдвигом на 2 столбца... ни как не могу разобраться с этим. Так же вопрос о том как назначить скопированному диапазону рамку из толстых линий по краям диапазонаSanchesLi
Добрый день! Весь ваш макрос moveRow() можно было заменить одной строчкой [vba]
Код
' Копируем строку на листе Invoice, на которой строит курсор ' и вставляем ее на лист History последней строкой таблицы [A:G].Rows(ActiveCell.Row).Copy .Cells(Rows.Count, 3).End(xlUp).Offset(1)
[/vba]
А то, что вы хотите, можно сделать, например, так:
[vba]
Код
Sub moveRow() Dim lastRow As Long With History lastRow = .Cells(Rows.Count, 3).End(xlUp).Row + 1
' Копируем строку на листе Invoice, на которой строит курсор ' и вставляем ее на лист History последней строкой таблицы [A:G].Rows(ActiveCell.Row).Copy .Cells(lastRow, 3)
' рисуем рамки With .[A4:I4].Resize(lastRow - 3) .Borders.Weight = xlThin .BorderAround , xlMedium .Columns(1).Borders(xlEdgeRight).Weight = xlMedium .Columns(2).Borders(xlEdgeRight).Weight = xlMedium .Columns(3).Borders(xlEdgeRight).Weight = xlMedium .Columns(8).Borders(xlEdgeRight).Weight = xlMedium End With End With End Sub
[/vba]
Добрый день! Весь ваш макрос moveRow() можно было заменить одной строчкой [vba]
Код
' Копируем строку на листе Invoice, на которой строит курсор ' и вставляем ее на лист History последней строкой таблицы [A:G].Rows(ActiveCell.Row).Copy .Cells(Rows.Count, 3).End(xlUp).Offset(1)
[/vba]
А то, что вы хотите, можно сделать, например, так:
[vba]
Код
Sub moveRow() Dim lastRow As Long With History lastRow = .Cells(Rows.Count, 3).End(xlUp).Row + 1
' Копируем строку на листе Invoice, на которой строит курсор ' и вставляем ее на лист History последней строкой таблицы [A:G].Rows(ActiveCell.Row).Copy .Cells(lastRow, 3)
' рисуем рамки With .[A4:I4].Resize(lastRow - 3) .Borders.Weight = xlThin .BorderAround , xlMedium .Columns(1).Borders(xlEdgeRight).Weight = xlMedium .Columns(2).Borders(xlEdgeRight).Weight = xlMedium .Columns(3).Borders(xlEdgeRight).Weight = xlMedium .Columns(8).Borders(xlEdgeRight).Weight = xlMedium End With End With End Sub
Ваш способ предлагает копировать только по одной строке. Мне же нужно копировать именно выделенный диапазон. Но благодаря Вам я реализовал поставленную задачу. Спасибо! Вопрос закрыт.
P.S.: дописал строку Paste в конечном варианте это выглядит так: .Paste .Cell(newrow - 3)
Ваш способ предлагает копировать только по одной строке. Мне же нужно копировать именно выделенный диапазон. Но благодаря Вам я реализовал поставленную задачу. Спасибо! Вопрос закрыт.
P.S.: дописал строку Paste в конечном варианте это выглядит так: .Paste .Cell(newrow - 3)SanchesLi