Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Копирование строк из одной таблицы в другую макросом
 
Добрый день,
Подскажите, каким макросом можно данные из одного листа копировать в таблицу (именно в таблицу, которая создана через "форматировать как таблицу") другого листа?
Собственно задача выглядит примерно так:
На листе 2 есть форма для ввода данных, которые заполняются вручную. На этом же листе данные автозаполняются в вспомогательную таблицу. После заполнения нужно копировать данные из вспомогательной таблицы в первую пустую ячейку основной таблицы на листе 1. Чтобы было понятней, в приложении добавил картинку с описанием задачи.

Я пытался решить примерно следующим алгоритмом:
1. выделить данные вспомогательной таблицы
2. копировать их
3. выбрать первую пустую ячейку в основной таблице
4. вставить туда данные

Завяз на пункте 3 - выбрать первую пустую ячейку в основной таблице.
На форуме в архиве нашел макрос, который позволяет искать первую пустую строку:
Код
Sub Макрос1()
Dim iLastRow As Long
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row
Cells(iLastRow + 1, 2).Select
End Sub

но, поскольку в vba я мягко говоря не алё, не знаю, как изменить его, чтобы он искал первую пустую строку именно в таблице, а не просто на листе. Еще было бы здорово, если пустой строки в этой таблице нет, то строка из вспомогательной таблицы просто вставлялась, как новая строка.

Исходный файл прилагаю ниже.
Изменено: mmsh - 10 Ноя 2019 14:36:48
 
Цитата
mmsh написал:  Книга1.xlsx
не открывал. В .xlsx макросы не живут, а вы пишете о макросах.
 
Сделал так:
Перед каждым копированием в таблицу вставляется новая строка
Sub DМакрос1()'
' Макрос1 Макрос
'
Sheets("Лист1").Activate
Range("B22:D22").Select
Selection.ListObject.ListRows.Add (2)
Sheets("Лист2").Activate
Range("H4:J4").Select
   Selection.Copy
   Sheets("Лист1").Activate
   Range("b22:b27").SpecialCells(xlCellTypeBlanks)(1).Activate
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
       
Sheets("Лист2").Activate
Range("B3,B5,B7").Select
   Range("B7").Activate
   Selection.ClearContents

End Sub

Не совсем, что задумывал, но меня устраивает. Может кому пригодится.

Цитата
В .xlsx макросы не живут
Вы прям как из бюджетной организации: "у вас справка ни тем шрифтом напечатана, вот как перепечатете, так мы ее и рассмотрим..."
Изменено: mmsh - 10 Ноя 2019 17:29:14
 
Отредактируйте сообщение. Код в сообщении следует оформлять с помощью кнопки <...>
Страницы: 1
Читают тему (гостей: 1)
Наверх