Автор Тема: Вставить из листа  (Прочитано 1112 раз)

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Вставить из листа
« : 08 Октябрь 2022, 14:36 »
Добрый день! Не могу нигде найти информацию. Есть типовые листы (заявки) из них надо определенные ячейки перенести на отдельный лист. Можно ли сделать так, чтобы не писать код под каждую ячейку и лист, а просто выбрать активный лист, нажать на макрос и всё сразу загружалось? Я примерно представляю как это сделать, но не выходит. И чтобы каждый лист начинался с новой строки в таблице. Так же в исходных листах есть объединённые ячейки. Спасибо большое!
Вот то что я смогла сделать:
Worksheets("Лист 2").Range("F11:H11").Copy Worksheets("Отчёт").Range("N3")

   For Each rCell In Worksheets("Отчёт").Range("N3")
       rCell.UnMerge
   Next
   
Worksheets("Лист 2").Range("C12").Copy Worksheets("Отчёт").Range("O3")

   For Each rCell In Worksheets("Отчёт").Range("O3")
       rCell.UnMerge
   Next

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Вставить из листа
« Ответ #1 : 08 Октябрь 2022, 14:46 »
Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Вместо Worksheets("Лист 2") пишите ActiveSheet:
ActiveSheet.Range("F11:H11").Copy Worksheets("Отчёт").Range("N3")

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Re: Вставить из листа
« Ответ #2 : 08 Октябрь 2022, 15:24 »
Я пыталась так сделать, но он не копирует ничего. Выделяет этот код желтым. Я только учусь, не понимаю что не так...

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Re: Вставить из листа
« Ответ #3 : 08 Октябрь 2022, 15:33 »
Всё получилось, разобралась. спасибо большое!

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Re: Вставить из листа
« Ответ #4 : 08 Октябрь 2022, 16:00 »
Как сделать, чтобы вставлялось в пустую ячейку этого столбца? вместо Worksheets("Отчёт").Range("N3")
Нашла вот это, но как использовать не понимаю:
Dim iLastRow As Long 
iLastRow = Cells(Rows.Count,2).End(xlUp).Row 
cells(iLastRow+1,2).Select

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Вставить из листа
« Ответ #5 : 08 Октябрь 2022, 16:05 »
End не ищет в скрытых строках.
Activesheet можно не указывать, можно сразу писать Range.

Sub Макрос()
   
    Dim r As Long
   
    r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "N").End(xlUp).Row + 1
    Range("F11:H11").Copy Worksheets("Отчёт").Cells(r, "N")

End Sub

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Re: Вставить из листа
« Ответ #6 : 08 Октябрь 2022, 17:04 »
Снова ваша помощь нужна...
Ячейки, из которых я копирую, объединенные. А вставить нужно в 1 ячейку без объединения.
Пыталась разными способами, вот последние:
1)Range("A3:D8").MergeCells = False
2)Dim rCell As Range
   For Each rCell In Worksheets("Отчёт").Range("D3")
   rCell.UnMerge
Но проблема в том, что я не знаю в какую строку будет вставляться, тк будет заполняться следующая пустая.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Вставить из листа
« Ответ #7 : 08 Октябрь 2022, 17:07 »
Если форматы (заливку ячеек, размер шрифта и тому подобное) копировать не надо, то можно не использовать метод Copy:
Sub Макрос()
   
    Dim r As Long
   
    r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "N").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "N").Value = Range("F11").Value

End Sub

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Re: Вставить из листа
« Ответ #8 : 08 Октябрь 2022, 18:34 »
извините, не вставляется ничего, пустые ячейки

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Re: Вставить из листа
« Ответ #9 : 08 Октябрь 2022, 18:41 »
Именно ваш код вставляет, но когда меняю на другие ячейки-ничего не работает

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Вставить из листа
« Ответ #10 : 08 Октябрь 2022, 18:52 »
Выложите код, который не вставляет.

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Re: Вставить из листа
« Ответ #11 : 08 Октябрь 2022, 18:55 »
Первые 4 кода работает, остальные нет
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "N").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "N").Value = Range("F11").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "M").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "M").Value = Range("E11").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "L").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "L").Value = Range("D11").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "K").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "K").Value = Range("C11").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "J").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "J").Value = Range("G8").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "I").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "I").Value = Range("C8").Value
   

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Вставить из листа
« Ответ #12 : 08 Октябрь 2022, 18:57 »
Этот код не вставляет:?
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "J").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "J").Value = Range("G8").Value

Оффлайн Screen

  • Посетитель форума
  • Сообщений: 26
Re: Вставить из листа
« Ответ #13 : 08 Октябрь 2022, 18:57 »
да, верно код ниже тоже не вставляет

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Re: Вставить из листа
« Ответ #14 : 08 Октябрь 2022, 18:59 »
Range("G8") объединённая ячейка?