摘要。我试图循环遍历一个表,如果在指定列中找到特定的子字符串,则删除每一行。我特别卡在查找目标文本的代码行上,我知道这是不正确的,但找不到我想要实现的目标的正确语法:If tbl.DataBodyRange(rw, 10)。查找(myString)
我搜索了许多网站和 YouTube 视频,其中有一些可以找到准确的值,但我找不到像我要解决的问题那样的内容。
我的代码:
Sub removeTax()
Dim tbl As ListObject
Set tbl = ThisWorkbook.Sheets("Master").ListObjects("tblMaster")
Dim myString As String
myString = "Tax"
Dim rw
For rw = tbl.DataBodyRange.Rows.Count To 1 Step -1
If tbl.DataBodyRange(rw, 10).Find(myString) Then
tbl.ListRows.Delete
End If
Next
End Sub
非常感谢您提供的任何帮助。
最佳答案
删除 Excel 表格的条件行 (ListObject
)
- 作为替代方案,这使用了一种使用
AutoFilter
的方法。和SpecialCells
.
使用
Sub RemoveTax()
Const CritColumn As Long = 10
Const CritString As String = "*Tax*" ' contains
Dim tbl As ListObject
Set tbl = ThisWorkbook.Worksheets("Master").ListObjects("tblMaster")
DeleteTableCriteriaRows tbl, CritColumn, CritString
End Sub
方法
Sub DeleteTableCriteriaRows( _
ByVal Table As ListObject, _
ByVal CriteriaColumn As String, _
ByVal CriteriaString As String)
With Table
If .ShowAutoFilter Then
If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData
Else
.ShowAutoFilter = True
End If
.Range.AutoFilter CriteriaColumn, CriteriaString
Dim rg As Range
On Error Resume Next
Set rg = .DataBodyRange.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
.AutoFilter.ShowAllData
If Not rg Is Nothing Then rg.Delete xlShiftUp
End With
End Sub
关于excel - 如果特定单元格 (DataBodyRange) 包含特定子字符串,则用于删除 Excel 表格 (ListObject) 中的行的 VBA 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74091927/