请帮我修复一个宏,将已完成的项目(A列)粘贴到下一个工作表(已完成的选项卡),然后在转移到已完成选项卡后从第一个工作表(电子邮件跟踪器)中删除它。它的行为如下:
- 在“已完成”选项卡中覆盖内容,而不是向其添加其他条目
以下是我的代码。
Sub Clear()
'
' Clear Macro
'
' Keyboard Shortcut: Ctrl+Shift+G
'
Sheets("Email Tracker").Select
Range("A1").AutoFilter Field:=1, Criteria1:= _
"Completed"
ActiveSheet.AutoFilter.Range.Copy
Sheets("Completed").Select
Dim Lastrow As Long
Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Sheets("Email Tracker").Select
Range("A1").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
End Sub
答案 0 :(得分:0)
使用宏录制器时,应始终尝试清理代码并删除"选择"。我看到你试图添加最后一行的位置,但不知道如何应用它。下面的代码首先设置目标表的最后一行(LR),这样您就可以正确粘贴"已完成的"通过电子邮件发送到“目标”工作表中最后一行之后的第一个空行。接下来,它会将您的标题从源表复制到目标表,因为我不知道它们是否已经在目标表中。接下来,它会过滤您的源表并将可见数据复制到目标表,将数据粘贴到最后一行下面的第一个空行。然后它将删除过滤后的源表上的可见数据。最后,它会删除源表中的过滤器。
Dim LR As Long
With Worksheets("Email Tracker")
Rows(1).EntireRow.Copy Sheets("Completed").Range("A1")
LR = Sheets("Completed").Cells(Rows.Count, 1).End(xlUp).Row
.AutoFilterMode = False
With Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:="Completed"
On Error Resume Next
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Copy Sheets("Completed").Cells(LR + 1, 1)
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.AutoFilterMode = False
End With