excel - 如果特定单元格 (DataBodyRange) 包含特定子字符串,则用于删除 Excel 表格 (ListObject) 中的行的 VBA 代码

标签 excel vba listobject excel-tables

  1. 摘要。我试图循环遍历一个表,如果在指定列中找到特定的子字符串,则删除每一行。我特别卡在查找目标文本的代码行上,我知道这是不正确的,但找不到我想要实现的目标的正确语法:If tbl.DataBodyRange(rw, 10)。查找(myString)

  2. 我搜索了许多网站和 YouTube 视频,其中有一些可以找到准确的值,但我找不到像我要解决的问题那样的内容。

  3. 我的代码:

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)

使用

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/

相关文章:

excel - VBA 从列表中删除 Excel 列

excel - 将选定范围复制到另一个工作表

Excel VLOOKUP 或索引匹配

用于将多值单元格映射到多值结果的 Excel 公式或数据库查找?

excel - 用分隔列展开表

vba - 如何在 VBA (Excel) 中使用变量设置属性

vba - 如何在没有任何数据行的情况下读取 Excel 表/ListObject 中的计算列的公式

arrays - Excel VBA : What is the Maximum Number of String Elements that can be Stored in an Array

vba - 什么时候适合显式使用 Err.Clear?

excel - 将值数组粘贴到 ListObject(Excel 表)上会破坏 Listobject