【问题标题】:Cut Copy Selected Range At the last cell in a column剪切复制选定范围在一列的最后一个单元格处
【发布时间】:2020-02-23 15:50:08
【问题描述】:

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

Selection.Copy

Windows(Workbook1).Activate

Sheets(Sheet1).Select

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

ActiveCell.PasteSpecial xlPasteValues

我在第 4 行得到错误

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

【问题讨论】:

标签: excel vba copy-paste


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    请试试这个代码。它将在 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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      相关资源
      最近更新 更多