我一直在看这个5个多小时无法找到正确的解决方案。这不是我的主要交易,而是我在工作中帮助解决的问题。
基本上我是从已过滤行的工作表复制到另一张工作表并将其放在A列的最后一行进行粘贴。
在我做了一些改动之前,这完全找不到,现在它完全坏了,感谢任何帮助,这里是破碎的意大利面条代码....
Sheets("Working Sheet").Select
Selection.Copy
Sheets("Sent Items").Select
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
End With
Range("A" & LastRow).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("K:K").EntireColumn.AutoFit
Sheets("Sent Items").Select
导致错误1004说大小需要相同???粘贴会导致错误。任何帮助都很好,一直在寻找答案。
答案 0 :(得分:1)
由于您要复制过滤的行,因此使用SpecialCells
方法始终是一种好习惯。
请参阅下面的重构代码。此外,始终最好avoid using select并直接使用对象。
Dim wsWorking as Worksheet
Set wsWorking = Sheets("Working Sheet")
With wsWorking
.Select
Selection.SpecialCells(xlCellTypeVisible).Copy
End With
Dim wsSent as Worksheet
Set wsSent = Sheets("Sent Items")
With wsSent
Dim LastRow As Long
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
.Range("A" & LastRow).PasteSpecial
.Columns("K:K").EntireColumn.AutoFit
.Range("A1").Select 'to make sure you end up on that sheet
End With
答案 1 :(得分:1)
您可以按如下方式重构代码:
Worksheets("Working Sheet").Select
Selection.SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Sent Items").Cells(Rows.Count, 1).End(xlUp).Offset(1)
或者,如果您只想粘贴值:
Dim area As Range
Worksheets("Working Sheet").Select
For Each area In Selection.SpecialCells(xlCellTypeVisible).Areas
Worksheets("Sent Items").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(area.Rows.Count, area.Columns.Count).Value = area.Value
Next area