消息框返回macros完成后的任务?

我有一个macros从我的电子表格数据选项卡中删除特定的不需要的数据。 我是VBA的业余爱好者,所以我确信我的macros可能会更好,但是首先它会根据表中的3个标准删除重复项,然后过滤3列并删除基于所述filter的每行数据,清除所有一旦macros完成运行,筛选器将提示一个完整的消息框。

有什么方法可以添加到消息框或创build一个用户表单,将返回已完成的操作(#删除重复,#行删除等)?

我知道当你只使用数据选项卡中的重复删除function,它会警告有多less被删除,剩余多less行。

这是我的新手脚本。

Sub Del_Dups_and_Remarks() ' Del_Dups Application.ScreenUpdating = False Range("DenialsTable1[[#Headers],[Payment Tx ID]]").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select ActiveSheet.Range("DenialsTable1[#All]").RemoveDuplicates Columns:=Array(2, 6, _ 14), Header:=xlYes ' Remark_Removal ActiveSheet.ListObjects("DenialsTable1").Range.AutoFilter Field:=19, _ Criteria1:="=MEDICAID [239]", Operator:=xlOr ActiveSheet.ListObjects("DenialsTable1").Range.AutoFilter Field:=22, _ Criteria1:="Y" ActiveSheet.ListObjects("DenialsTable1").Range.AutoFilter Field:=9, _ Criteria1:="N598" Application.DisplayAlerts = False Range("DenialsTable1").Offset(1, 0).Select Selection.Delete Application.DisplayAlerts = True 'Clear_Filters Range("A6").Select ActiveSheet.ShowAllData Range("A7").Select Application.ScreenUpdating = True MsgBox ("Completed") End Sub 

提前谢谢你!

就目前而言, SELECT是太多的,如果它出现在第一行,代码将不会删除所需的条件

你也缺lessOption Explicit – 使用这将减轻未来的许多麻烦

 Option Explicit Sub Del_Dups_and_Remarks() ' Del_Dups Dim InitCount as long Dim AfterDups as long Dim AfterDel as long Application.ScreenUpdating = False InitCount=Range("DenialsTable1").rows.count ActiveSheet.Range("DenialsTable1").RemoveDuplicates Columns:=Array(2, 6, _ 14), Header:=xlYes AfterDups=Range("DenialsTable1").rows.count ' Remark_Removal ActiveSheet.ListObjects("DenialsTable1").Range.AutoFilter Field:=19, _ Criteria1:="=MEDICAID [239]", Operator:=xlOr ActiveSheet.ListObjects("DenialsTable1").Range.AutoFilter Field:=22, _ Criteria1:="Y" ActiveSheet.ListObjects("DenialsTable1").Range.AutoFilter Field:=9, _ Criteria1:="N598" Application.DisplayAlerts = False ActiveSheet.Range("DenialsTable1").SpecialCells _ (xlCellTypeVisible).Delete Application.DisplayAlerts = True AfterDel=Range("DenialsTable1").rows.count 'Clear_Filters ActiveSheet.ListObjects("DenialsTable1").autofilter.ShowAlldata Application.ScreenUpdating = True MsgBox "Completed" & vbCrLf & "Initial Rows:" & InitCount & vbcrlf _ & "Deduplicated " & InitCount - AfterDups & vbCrLf _ & "Deleted " & AfterDups - AfterDel & vbCrLf _ & "FinalCount " & AfterDel End Sub 

正如BruceWayne指出的那样 ,将ActiveSheet更改为variables可能会有点挑战,因此它可以从您运行代码的任何表单