我编写了代码,尝试将多个数据范围从一个工作表复制并粘贴到另一个工作表,但是我想将数据复制到前一组数据下。我用于复制条目的代码是此部分:
Selection.Copy
Windows(Workbook1).Activate
Sheets(Sheet1).Select
Cells(Rows.Count, 1).End(x1Up).Select
ActiveCell.PasteSpecial xlPasteValues
我在第四行出现错误
((应用程序定义或对象定义的错误)。
您的代码可以使用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)
避免使用激活和选择。它很慢并且可能不可靠。
请尝试此代码。它将选择的范围值复制到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)