过滤后如何删除行?

时间:2019-10-07 11:44:47

标签: excel vba

我正在尝试删除数据集中所有注释为“ New”的行。为此,我首先自动过滤E列中的“ new”(效果很好),并使用代码“ specialcells”将其删除。我使用了两种方法,一种是通过命名范围,另一种是通过命名表。对于这两个代码,我都有运行时错误“ 104”

调试时,下面的代码行显示运行时错误104;

-表 tableData.DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.Delete

-范围 tableData.SpecialCells(xlCellTypeVisible).Rows.Delete

奇怪的是,有时它设法删除单元格,但仍会显示运行时错误104弹出窗口,其他时候我的excel工作簿在运行代码时崩溃。

我不确定我要去哪里错了://您的帮助将不胜感激!谢谢

下面是带有表的代码

Sub Deleterows_Tryagain()

Dim ws As Worksheet
Dim tableData As ListObject
'Worksheet
Set ws = ThisWorkbook.Worksheets("Run_Mailbox")
'Declare table1
Set tableData = ws.ListObjects(1)

'Autofilter Column E,comment "New"
tableData.Range.AutoFilter field:=5, Criteria1:="New"

'Delete Rows with comment "New"
tableData.DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.Delete

'Show all data
ws.ShowAllData

End Sub

指示范围的代码

Sub Deleterow_NewInvoices()

Dim Rng As Range
Dim tableData As Range

'The Table
Set tableData = Range(Range("A9").End(xlDown), Range("E9"))

'The range to filter the data
Set Rng = Range(Range("A8").End(xlDown), Range("E8"))
'Autofilter Column E,comment "New"
Rng.AutoFilter field:=5, Criteria1:="New"

'Delete row
tableData.SpecialCells(xlCellTypeVisible).Rows.Delete


Rng.ShowAllData

End Sub

2 个答案:

答案 0 :(得分:0)

您也可以使用类似的方法。

它不使用自动过滤器,而是从第9行开始删除第5列中所有带有“ New”的行

Sub DeleteRowsIf()

Dim lRow As Long
Dim iCntr As Long
lRow = Range("A8").End(xlDown).Row
For iCntr = lRow To 9 Step -1
    If Cells(iCntr, 5).Value = "New" Then
        Rows(iCntr).Delete
    End If
Next

End Sub

答案 1 :(得分:0)

经过一番谷歌搜索后,我找到了答案。我的代码无法正常工作,因为我的工作表受到保护。为了纠正这一点;

声明工作表并取消保护

Set ws = ThisWorkbook.Worksheets("blabla")

ws.Unprotect

具有下表的完整代码

'Select worksheet
Set ws = ThisWorkbook.Worksheets("blabla")

'Done to avoid errors
ws.Unprotect

'Declare table1
Set tableData = ws.ListObjects(1)

'Autofilter Column E,comment "New"
tableData.Range.AutoFilter Field:=5, Criteria1:="New"

'Delete Rows with comment "New"
tableData.DataBodyRange.SpecialCells(xlCellTypeVisible).Rows.Delete


End Sub

我希望这对某人有帮助:)