Может быть, это то, что вы хотите ...
Sub copypaste()
Dim rng1 As Range
Dim rng2 As Range
Dim lastrow As Integer
Dim lastrow1 As String
Dim lastrow2 As Integer
Set rng1 = ThisWorkbook.Sheets("bp transaction details").Range("A1:I1")
lastrow = ThisWorkbook.Sheets("bp transaction details").Cells(ThisWorkbook.Sheets("bp transaction details").Rows.Count, "I").End(xlUp).Row
ThisWorkbook.Sheets("bp transaction details").Range("A" & lastrow + 1 & ":I" & lastrow + 1) = rng1.Value
lastrow1 = ThisWorkbook.Sheets("bp transaction breakdown").Cells(ThisWorkbook.Sheets("bp transaction breakdown").Rows.Count, "R").End(xlUp).Row
lastrow2 = ThisWorkbook.Sheets("bp transaction breakdown").Cells(ThisWorkbook.Sheets("bp transaction breakdown").Rows.Count, "I").End(xlUp).Row
Set rng2 = ThisWorkbook.Sheets("bp transaction breakdown").Range("A1:I1" & lastrow1)
ThisWorkbook.Sheets("bp transaction breakdown").Range("A" & lastrow2 + I & ":I" & lastrow1 + lastrow2) = rng2.Value
MsgBox "Done"
End Sub
Некоторые замечания:
Я не уверен, что эта часть должна делать: 'lastrow1 = ThisWorkbook.Sheets("bp transaction breakdown").Range("ri")
'Что предполагается эта частьсделать?Найти последний ряд для столбца R?Я думаю, вы хотите найти последнюю строку в столбце R, поэтому я заменил предыдущую часть на:
lastrow1 = ThisWorkbook.Sheets("bp transaction breakdown").Cells(ThisWorkbook.Sheets("bp transaction breakdown").Rows.Count, "R").End(xlUp).Row
Изменено: End(x1Up).Row
Должно быть: End(xlUp).Row
Вы неТ нужно указать ThisWorkbook.Sheets("bp transaction details").
.Только делает код более неэффективным ...