Вырезать Копировать выделенный диапазон В последней ячейке столбца - PullRequest
0 голосов

Я написал код, в котором я пытаюсь скопировать и вставить несколько диапазонов данных из одного листа в другой, но я хочу скопировать данные ниже предыдущего набора данных. Код, который я использовал для записей копирования, является этой частью:

Selection.Copy

Windows(Workbook1).Activate

Sheets(Sheet1).Select

Cells(Rows.Count, 1).End(x1Up).Select

ActiveCell.PasteSpecial xlPasteValues

Я получаю сообщение об ошибке в 4-й строке

(ошибка приложения или объекта).

Ответы [ 2 ]

0 голосов
/ 23 февраля 2020

Попробуйте этот код, пожалуйста. Он скопирует выбранные значения диапазона в последнюю пустую строку столбца A: A. Я понял это из вашего способа расчета. Но вы сделали это неправильно. Вы скопируете свой диапазон по «A1: A» и последнему диапазону ячеек. Это то, что вы действительно хотите?

Sub testCopyValues()
 Dim sh As Worksheet, lastRow As Long, rng As Range

 Set rng = Selection
 Set sh = Workbooks("Workbook1").Sheets(1)

 lastRow = sh.Cells(Rows.count, 1).End(xlUp).row

 sh.Range("A" & lastRow + 1).Resize(rng.Rows.count, rng.Columns.count).Value = rng.Value
End Sub

Если вам нужно вставить другой лист той же книги, замените

Set sh = Workbooks("Workbook1").Sheets(1) на Set sh = ActiveWorkbook.Sheets(1)

0 голосов
/ 23 февраля 2020

Ваш код может быть сжат, используя пример из https://docs.microsoft.com/en-us/office/vba/api/excel.range.copy:

Worksheets("Sheet1").Range("A1:D4").Copy destination:=Worksheets("Sheet2").Range("E5")

Применимо к вашей работе:

Dim lRow As Long
Dim wb As Workbook: Set wb = ThisWorkbook
Dim Sourcews As Worksheet: Set Sourcews = wb.Worksheets("Sheet21")
Dim Destinationws As Worksheet: Set Destinationws = wb.Worksheets("Sheet1")

lRow = Destinationws.Cells(Destinationws.Rows.Count, "A").End(xlUp).Row + 1
Sourcews.Range("A1:D4").Copy Destination:=Destinationws.Range("A" & lRow)

Избегайте использования активировать и выбрать. Это медленно и может быть ненадежным.

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