Excel vba在工作表和删除行中查找值

时间:2014-08-28 04:22:34

标签: excel vba excel-vba

我在下面编写了下面的宏,当SMT02表上有数据(示例)12345时,它非常有用。

因此,如果存在12345,则会保留这些行,并使用其他数据删除其余行。

但我希望它以这种方式工作,即使12345不存在,那么我仍然希望删除其他所有(行)。目前它调试并停止。有人可以帮忙吗?

Dim c As Range
Dim SrchRng

Sheets("SMT02").Select
Range("B1").Select
Set SrchRng = ActiveSheet.Range("B1", ActiveSheet.Range("B65536").End(xlUp))
Do
    Set c = SrchRng.Find("12345", LookIn:=xlValues)
    If Not c Is Nothing Then c.EntireRow.Delete
Loop While Not c Is Nothing

1 个答案:

答案 0 :(得分:0)

如果您尝试删除工作表中的每一行,当值为" 12345"在特定工作表(示例中的SMT02)的指定列(示例中的B列)的单元格中不存在我认为您会发现这有效:

Sub DeleteRowIfNot12345()

    Dim Rng As Range
    Dim x As Long

    Sheets("SMT02").Select

    Set Rng = Range("B1:B" & Range("B65536").End(xlUp).Row)
    For x = Rng.Rows.Count To 1 Step -1
        If InStr(1, Rng.Cells(x, 1).Value, "12345") = 0 Then
            Rng.Cells(x, 1).EntireRow.Delete
        End If
    Next x

End Sub