VBA:Runtime 1004--粘贴到另一工作表的最后一行
为了构建数据透视表/图表,我试图合并四个单独的选项卡,只从每个选项卡中提取特定的列,这些列位于每个源选项卡的不同位置。这是给另一个用户的,所以手动操作不是一个选项 第一个选项卡工作正常,因为它只是一个直拉。一旦我尝试粘贴到最后一行,事情就变得很奇怪了。我从来没有这样做过这个任务,所以这里可能有一些我遗漏的基本概念导致了这个问题。我正在使用一种我在对如何编写脚本进行初步研究时发现的方法 下面是第一个选项卡中的一个示例:VBA:Runtime 1004--粘贴到另一工作表的最后一行,vba,excel,Vba,Excel,为了构建数据透视表/图表,我试图合并四个单独的选项卡,只从每个选项卡中提取特定的列,这些列位于每个源选项卡的不同位置。这是给另一个用户的,所以手动操作不是一个选项 第一个选项卡工作正常,因为它只是一个直拉。一旦我尝试粘贴到最后一行,事情就变得很奇怪了。我从来没有这样做过这个任务,所以这里可能有一些我遗漏的基本概念导致了这个问题。我正在使用一种我在对如何编写脚本进行初步研究时发现的方法 下面是第一个选项卡中的一个示例: 'Copy and paste data from tab 1 Workshe
'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)
我也尝试了工作表(“聚合”).Range(“A&LastRow”),但也不起作用 这正是你在上面的评论中所建议的。当然,如果复制的单元格数量超过目标工作表上的剩余单元格数量,则仍然可能会出现错误,因此可能需要对这一不太可能发生的事件进行一些错误捕获
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
像这样的东西应该适合你
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
您应该向LastRow添加图纸引用。然而,主要的问题是,你试图把一整列复制到一个更小的范围,你不能把一夸脱放进一品脱罐里。我怀疑您是否需要复制整个列。那么我可能需要两个LastRow变量?一个用于源工作表,一个用于目标工作表,并将工作表引用添加到单元格前面(对于每个单元格,列未在行计数中定义,因此我可以使用工作表(“修订的”).range(“A1”:“A”和LastRow)要获得具体的号码?解决方案已验证。这是我的选择,工作起来很有魅力,我一路上学到了一些东西。谢谢SJR。