VBA:运行时1004 - 粘贴到另一个工作表的LastRow

时间:2017-05-17 16:12:52

标签: excel vba excel-vba

我正在尝试整合四个单独的标签,仅从每个标签中拉出特定列,这些列位于每个源标签上的不同位置,以便构建可旋转图表/图表。这是针对其他用户的,因此不能选择手动操作。

第一个标签工作正常,因为它只是一个直拉。一旦我尝试粘贴到最后一行,事情就很奇怪了。我从来没有这样做过这个任务,所以我可能会在这里找到一些非常基本的概念导致问题。我正在使用我在初步研究如何编写脚本时找到的方法。

以下是第一个有效的标签示例:

'Copy and paste data from tab 1
Worksheets("redacteda").Range("H:H").Copy _
    Worksheets("Aggregate").Range("G:G")

以下是导致错误的后续选项卡中的示例:

Dim LastRow As Long

LastRow = Cells(Rows.Count, "A").End(xlUp).Row + 1

'Copy and Past data from tab 2
Worksheets("redactedb").Range("A:A").Copy _
    Worksheets("Aggregate").Range("A" & LastRow)

我尝试了工作表(“聚合”)。范围(“A& LastRow”),但也没有用。

2 个答案:

答案 0 :(得分:0)

这几乎就是您在上面评论中建议的内容。当然,如果您复制的单元格数多于目标工作表上剩余的单元格数,则仍可能出错 - 因此需要对此可能不太可能的事件进行一些错误捕获。

Sub x()

Dim LastRow1 As Long, LastRow2 As Long

With Worksheets("redactedb")
    LastRow1 = .Cells(Rows.Count, "A").End(xlUp).Row
    LastRow2 = Worksheets("Aggregate").Cells(Rows.Count, "A").End(xlUp).Row + 1
    .Range("A1", .Range("A" & LastRow1)).Copy Worksheets("Aggregate").Range("A" & LastRow2)
End With

End Sub

答案 1 :(得分:0)

这样的事情应该适合你...

Sub Foo()
    Dim wsDest As Worksheet: Set wsDest = ThisWorkbook.Worksheets("Sheet5")
    Dim wsSrc As Worksheet, i As Long, CopyRange As Range, LastRow As Long

    ' Initialize array with sheet names to combine
    Dim SrcArr() As String: SrcArr = Split("Sheet1,Sheet2,Sheet3,Sheet4", ",")

    For i = 0 To UBound(SrcArr)
        On Error Resume Next
            LastRow = wsDest.Range("A:A").Find("*", SearchDirection:=xlPrevious).Row
        On Error GoTo 0
        Set wsSrc = ThisWorkbook.Worksheets(SrcArr(i))
        With wsSrc
            Set CopyRange = Application.Intersect(.UsedRange, .Range("A:A"))
            CopyRange.Copy wsDest.Range("A" & LastRow + 1)
        End With
    Next i
End Sub