vba - 基于不包含部分文本的单元格的动态 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
解决方案
您可以使用自动过滤器,然后删除可见单元格
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
推荐阅读
- sql - 这是通过grafana使用它的正确方法吗?
- python - Pandas groupby:一次调用 ffill() + tail(1)?
- java - String.getBytes 是否被安全使用?
- reactjs - 在修改组件的文件中调用方法
- amazon-web-services - 使用启动模板进行计划扩展尝试减少机器数量时,它会卡住待处理的操作
- html - 无法将图像放入网格卡内
- javascript - 限制用户在 type=number 的输入字段中仅键入数字
- python - 在不同的日子随机分配一组人时最好的方法是什么?
- sql - 需要帮助以简化查询
- netsuite - 如何限制员工查看子公司的晋升记录