删除包含特定信息的所有单元格

时间:2015-08-27 13:43:43

标签: excel vba excel-vba

我有下面的代码,因为我想删除所有包含“Something”值的行,但是当我启动它时,它不会删除每一行只有一些,我点击了5次删除每一行,如何实现将通过一次单击删除包含“Something”的所有行的宏?提前致谢

Dim cell As Range

Worksheets("Something").Activate

For Each cell In Cells.SpecialCells(xlTextValues)
If cell = "Something" Then
cell.EntireRow.Delete
End If

Next cell

2 个答案:

答案 0 :(得分:1)

如果所有值都在A列中,比如说:

Worksheets("Something").Activate

With ActiveSheet
    Dim LastRow as Long
    LastRow = .Cells(.Rows.Count,1).end(xlUp).Row
    Dim i As Long

    For i = LastRow to 1 Step -1
        If .Cells(i,1).Value = "Something" Then
            .Rows(i).Delete
        End If
    Next
End With

答案 1 :(得分:0)

xlTextValues用于Range.SpecialCells method的可选参数,而不是您拥有它的主要类型

您需要在xlCellTypeConstantsxlCellTypeFormulas之间选择xlTextValues作为选项。如果你需要两者,你将不得不运行两次。

Dim cell As Range

with Worksheets("Something")
    .activate
    For Each cell In Cells.SpecialCells(xlCellTypeFormulas, xlTextValues)
        If cell = "Something" Then
            cell.EntireRow.Delete
        End If
    Next cell
    For Each cell In Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
        If cell = "Something" Then
            cell.EntireRow.Delete
        End If
    Next cell
end with

xlCellTypeConstantsxlTextValues都共享数值2(尽管用于不同目的)。出于所有意图和目的,您正在查看xlCellTypeConstants以查找任何类型的值,包括错误。

VBA的默认比较运算符为vbBinaryCompare,区分大小写。使用类似If Lcase(cell) = "something" Then的内容进行非区分大小写的比较。