剪切所选范围在列的最后一个单元格中

问题描述 投票:0回答:2

我编写了代码,尝试将多个数据范围从一个工作表复制并粘贴到另一个工作表,但是我想将数据复制到前一组数据下。我用于复制条目的代码是此部分:

Selection.Copy

Windows(Workbook1).Activate

Sheets(Sheet1).Select

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

ActiveCell.PasteSpecial xlPasteValues

我在第四行出现错误

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

excel vba copy-paste
2个回答
0
投票

您的代码可以使用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)

避免使用激活和选择。它很慢并且可能不可靠。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.