我有这段代码可以将数据从两张纸复制到另一张工作簿中。问题是它不能从第二张纸正确复制。它仅复制第12和13行,而范围应为第13行到最后一行。 我假设它必须对activecell有所帮助,但是很难找到它。
谢谢。
我将此代码保存在另一个文件中,该文件将20张纸复制到一个文件中,并且一切正常。唯一的区别是它们都在同一工作簿中。
Sub Copy()
For i = 2 To 3
wbk1.Worksheets(i).Activate
LastRow = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Row
Range("AV13:CJ" & LastRow).Select
Selection.Copy
wbk.Sheets("Data").Activate
LastRow = ActiveSheet.Cells(Rows.Count, "D").End(xlUp).Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(0, -3).Select
Selection.PasteSpecial xlPasteValues
Next i
答案 0 :(得分:0)
尝试以下操作::使用F8运行此代码,这样您将知道每一步都在发生什么。而且您会知道t是否出错。
Sub Copy()
For i = 2 To 3
With wbk1.Worksheets(i)
lastrow = .Cells(.Rows.Count, "D").End(xlUp).Row
.Range("AV13:CJ" & lastrow).Copy
End With
With wbk.Sheets("Data")
.Cells(.Rows.Count, "D").End(xlUp).Select
.Activate
End With
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(0, -3).Select
Selection.PasteSpecial xlPasteValues
Next i
End Sub
我的建议是否,以使用“激活”并选择。尝试在要粘贴数据的位置配置确切的引用。在代码中,我认为计算最后一行时存在问题。现在应该可以使用了。
答案 1 :(得分:0)
我不知道您的工作表Data
是什么样子,并且我还没有对此进行测试,但是如果您定义了wbk1
和wbk
,它可能会起作用。
Sub Copy()
Dim wksSource As Worksheet
Dim wksData As Worksheet
Dim LastRowSource As Long, LastRowData As Long
Set wksData = wbk.Worksheets("Data")
For i = 2 To 3
Set wksSource = wbk1.Worksheets(i)
With wksSource
lngRowsAV = .Cells(.Rows.Count, "AV").End(xlUp).Row
.Range("AV12:AV" & lngRowsAV).AutoFilter Field:=48, Criteria1:="=Yes"
LastRowSource = .Cells(.Rows.Count, "D").End(xlUp).Row
LastRowData = wksData.Cells(wksData.Rows.Count, "D").End(xlUp).Row
.Range("AV13:CJ" & LastRowSource).Copy
wksData.Range("A" & LastRowData + 1).PasteSpecial xlPasteValues
End With
Next i
Application.CutCopyMode = False
End Sub