Макрос для консолидации данных и вставки после последней строки - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь написать макрос, который объединит данные из 2 листов и вставит их в новый лист один за другим.У меня проблема со второй частью моего кода.

Я получаю

приложение или объектную ошибку.

Я думаюдиапазон может быть проблемой - я хочу скопировать все использованные строки столбца D с листа дампа и вставить их после последней использованной строки в столбце K на сводном листе.Это то, что я до сих пор

Sub Paste()
    Dim lRow3 As Long
    Dim rng3 As Range

    With ThisWorkbook
        With .Sheets("Dump Lease & RMP Charges")
            lRow3 = .Cells(.Rows.count, 1).End(xlUp).Row
            Set rng3 = .Range("D3:D" & lRow3)
            rng3.Copy Destination:=ThisWorkbook.Sheets("Summary Invoice ex").Range("K6")
        End With

        With Sheets("Dump MMS Service and Repairs")
            .Range(.Range("D3").End(xlToRight)).Copy 'line with error
        End With

        With Sheets("Summary Invoice ex")
            .Cells(.Rows.count, "K").End(xlUp).Offset(1, 0).PasteSpecial
        End With
    End With
End Sub

Я изменил последнюю часть на

 With .Sheets("Dump MMS Service and Repairs")
    lRow4 = .Cells(.Rows.count, 1).End(xlUp).Row
    Set rng4 = .Range("D3:D" & lRow4)
    rng4.Copy Destination:=ThisWorkbook.Sheets("Summary Invoice ex").Cells(lRow4 + 1, "K")

 End With

Теперь нет ошибки, но ничего не вставляется!

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Чтобы скопировать все использованные строки в столбце D, исходящие из ячейки D3, попробуйте

.Range(.Cells(.Rows.Count, "D").End(xlUp), .Cells(3, .Columns.Count).End(xlToLeft)).Copy 

вместо строки с ошибкой .Range(.Range("D3").End(xlToRight)).Copy в исходном коде.

Как этоworks:

  • .Cells(.Rows.Count, "D").End(xlUp) находит последнюю использованную строку в столбце D
  • .Cells(3, .Columns.Count).End(xlToLeft) находит последний использованный столбец в строке 3

.Range составляет диапазон этих двух ячеек.


Отредактируйте соответственно комментарий:
Для копирования строк в столбце D используйте только ...

.Range("D3", .Cells(.Rows.Count, "D").End(xlUp)).Copy
0 голосов
/ 15 октября 2018

Ошибка приложения или объекта.Обычно означает, что где-то есть опечатка.

Ваш второй оператор с оператором имеет точку маркера.

With .Sheets("Dump Lease & RMP Charges")

Если это не так

With Sheets("Dump Lease & RMP Charges")

Надеюсь, от этого избавитсяОшибка приложения / объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...