Здравствуйте, уважаемые форумчане! Подскажите, пожалуйста решить задачку. Необходимо из одной таблицы перенести строки в другую с сохранением значений. После переноса значений из первой таблицы необходимо удалить строки.
Msi2102, спасибо за ответ. Только задача состоит в том, что в пустую таблицу вносятся новые сотрудники, а после того как внесутся необходимые данные, они переносятся на другой лист, при этом первая таблица должна очистится. Это как-то можно реализовать?
Евгений Минаков: Необходимо из одной таблицы перенести строки в другую с сохранением значений. После переноса значений из первой таблицы необходимо удалить строки.
Откройте файл, включите макросы. На листе "Список сотрудников" двойной клик по любой фамилии или должности, при этом данные (по которым вы кликнули) из "Списка сотрудников" удалятся и вставятся в таблицу "Новые сотрудники". Всё сделал как просили.
Все супер. Приносят список с фамилиями и заполняют таблицу. После заполнения таблицы и нужно переносить внесенные данные в уже существующий список. Только не по одной фамилии (т.к. их может быть очень много), а сразу все
В фале примере есть два списка, первый "Список сотрудников" второй "Новые сотрудники". Вам нужно весь первый список вставить в конец второго после чего первый список очищаем? Если так, то я не понимаю в чем проблема. нужно просто выделить все данные (Ctrl+a) вырезать (Ctrl+x) и вставить в нужное место (Ctrl+v) (или мышкой правой кнопкой по нужным менюшка) работа в три действия. Собственно проблем написать макрос нет, просто нужно конкретно знать ваши задачи. Посмотрите файл. Так? Тоже двойным щелчком
Если бы Вы пытались переделать мой код, то он бы выглядел вот так:
Код
Sub Удаление_строк_1()
Dim a As Long, ShNN_1 As ListObject, ShON_1 As ListObject
Set ShNN_1 = Worksheets("Новые сотрудники").ListObjects("Новые_сотрудники_tb")
Set ShON_1 = Worksheets("Списки сотрудников").ListObjects("Списки_сотрудников_tb")
ShON_1.ListRows.Add AlwaysInsert:=True
a = ShON_1.ListRows.Count
ShNN_1.DataBodyRange.Copy ShON_1.ListRows(a).Range
Application.CutCopyMode = False
Selection.ListObject.DataBodyRange.Delete
End Sub
А Вы скорее пытаетесь написать свой, что собственно похвально.
вставляете скопированные строки перед вставленной строкой (т.к. она последняя и её номер соответствует количеству строк в переменной "Paste"), сдвигая её вниз. Чтобы понятнее было, в коде закомментируйте строку добавления строки и замените переменную "Paste" на 1, тогда список будет вставляться в начало таблицы, сдвигая все данные вниз.
Я не знаю, где ещё в коде Вы используете эти переменные NNListRow и NNListObj, но в этой процедуре они не используются, поэтому если код только на копирование строк, то их можно удалить.