Как сказал @Bigben - видео на YouTube не гарантируется. Здесь нет ни ответов, ни форумов.
Как сказал @HTH (извините, я не совсем понял, к чему он клонил, пока я не попробовал).
Вставить - это метод рабочего листа, и вы пытаетесь использовать это в диапазоне на листе.
ActiveSheet.Paste
вставит в выбранную ячейку на активном листе.
Говоря все это, я думаю, что это код, который вы ищете:
Public Sub PopPandL()
Dim wrksht As Worksheet
Dim PasteToRow As Long
For Each wrksht In ThisWorkbook.Worksheets
If wrksht.Name <> "P&L" Then
PasteToRow = wrksht.Index * 5 + 2
ThisWorkbook.Worksheets("P&L").Cells(PasteToRow, 1) = wrksht.Name
wrksht.Range("A1").CurrentRegion.Copy _
Destination:=ThisWorkbook.Worksheets("P&L").Cells(PasteToRow + 1, 1)
End If
Next wrksht
End Sub
На заметку, я бы не стал использовать CurrentRegion
, так как это может привести к неверным результатам - либо используйте метод, чтобы найти последнюю ячейку на листе, содержащем данные (если это то, что вам нужно), либо, возможно, поместите ваши данные в таблицу и используйте ListObjects
.