剪切复制选定范围在列中的最后一个单元格处



我写了一段代码,试图将多个数据区域从一个工作表复制并粘贴到另一个工作单,但我想复制前一组数据下面的数据。我用于复制条目的代码是这一部分:

Selection.Copy
Windows(Workbook1).Activate
Sheets(Sheet1).Select
Cells(Rows.Count, 1).End(x1Up).Select
ActiveCell.PasteSpecial xlPasteValues

我在第四排上看到错误

(应用程序定义或对象定义错误(。

您的代码可以使用https://learn.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)

避免使用activate和select。它很慢,而且可能不可靠。

请尝试此代码。它会将选定的范围值复制到列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)

相关内容

最新更新