【发布时间】:2016-11-18 22:07:54
【问题描述】:
我的问题:我正在尝试删除 AH 列中的表中的行,并且条件是“Del”,因此 AH 列中的任何单元格,我想删除该表中的整行。
我尝试了很多不同的代码,但大多数都需要很长时间,因为我有 10000 多行要删除。我从一个站点找到了这段代码,但我从If Intersect 行收到了一个错误subscript out of range Error9:
Private Sub deleteTableRowsBasedOnCriteria(tbl As ListObject, _
columnName As String, _
criteria As String)
Dim x As Long, lastrow As Long, lr As ListRow
lastrow = tbl.ListRows.Count
For x = lastrow To 1 Step -1
Set lr = tbl.ListRows(x)
If Intersect(lr.Range, tbl.ListColumns(columnName).Range).Value = criteria Then
'lr.Range.Select
lr.Delete
End If
Next x
End Sub
然后我调用 sub 如下:
Set tbl = ThisWorkbook.Worksheets("Sheet1").ListObjects("Table4")
Call deleteTableRowsBasedOnCriteria(tbl, "AH", "Del")
任何帮助都会很棒。谢谢你。
【问题讨论】:
-
我终于有机会对此进行测试,而我对
.Range的猜测显然是完全错误的。我的下一个猜测是......你的桌子上有一个标有“AH”的列吗?还是那是 Excel 列? (tbl.ListColumns(columnName)需要让columnName包含列名 - 例如“Column27”或“DelFlag” - 无论它在您的表中设置什么。)