宏需要多次启动

时间:2018-05-08 08:17:04

标签: excel vba excel-vba

我试图编写一个宏,从第二行到最后一行过滤列F,检查列中的值是否为数字,长度是否为5.如果列G中的值为G,则允许使用不同的长度。同一行包含" TEST"。如果值不符合标准,则应删除该行。宏似乎工作,但我需要多次启动它来过滤所有值。 这是宏:

Sub Makro1()
Dim lrow As Long
lrow = Cells(Cells.Rows.Count, "F").End(xlUp).Row
Dim Rng As Range
Set Rng = Range("F2:F" & lrow)
    For Each cell In Rng
        If Not IsNumeric(cell) Or (Len(cell) <> 5 And 
            InStr(UCase(cell.Offset(0, 1).Value), "TEST") = 0) Then
            cell.EntireRow.Delete
        End If
    Next
End Sub

1 个答案:

答案 0 :(得分:0)

尝试使用此代码时,它会使用向后循环,在迭代收集时建议,我们会从中删除:

Sub Makro1()
    Dim lrow As Long, i As Long, cellValue As String
    lrow = Cells(Rows.Count, "F").End(xlUp).Row

    For i = lrow To 2 Step -1
        cellValue = Cells(i, "F").Value
        If Not (IsNumeric(cellValue) And Len(cellValue) = 5) And Cells(i, "G").Value = "TEST" Then
            Rows(i).Delete
        End If
    Next
End Sub