首页 > 解决方案 > 基于不包含部分文本的单元格的动态 VBA 删除

问题描述

尝试对 C 列中不包含 CY* 的值进行动态行删除。我有以下代码,但不断收到 If Block Error。任何人都知道如何使这项工作?

Dim ContainWord As String
On Error Resume Next
Range("C2:C" & lrow).Select
ContainWord = "CY*"
If Not Cell.Find(ContainWord) Then ActiveCell.EntireRow.Delete.Row
End If

lrow 在我的代码前面定义为: Dim lrow As Long lrow = Range("A" & Rows.Count).End(xlUp).Row

标签: vbadynamicdelete-row

解决方案


您可以使用自动过滤器,然后删除可见单元格

Option Explicit
Public Sub test()
    Dim lRow As Long
    With ActiveSheet
        .AutoFilterMode = False
        lRow = .Range("A" & .Rows.Count).End(xlUp).Row

        With .Range("A1:Y" & lRow)
            .AutoFilter Field:=3, Criteria1:="<>CY*"
            On Error Resume Next
            .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).SpecialCells(xlCellTypeVisible).EntireRow.Delete
            On Error GoTo 0
        End With
     .AutoFilterMode = False
    End With      
End Sub

推荐阅读