如果在vba中等于#N / A,如何根据值循环单元格?

时间:2016-07-11 18:02:55

标签: excel vba excel-vba

我想创建一个包含循环遍历某些单元格的宏,一直持续到单元格为空(value ="")。然而,一些细胞具有"值" #N / A ...我想用它作为标记来删除任何行,但是,在检查单元格的值是否为空时,循环将是遇到许多等于#N / A的单元格。这会导致错误,因为我猜这不是一个真正的值,而是指示命令运行(在这种情况下,Vlookup)返回它没有为该单元格工作?给出的错误是类型不匹配。我如何解决这个问题...即。尽管#N / A不是真正的值,我怎么能让循环仍然检查单元格的值?

1 个答案:

答案 0 :(得分:1)

这将找到所有找到 #N / A 的所有单元格并删除单元格行。

Sub DeleteRowsWithErrors()
    Application.ScreenUpdating = False
    Dim c As Range
    With Worksheets(1).Cells

        Do
            Set c = .Find(What:="#N/A", _
            After:=.Range("A1"), _
            Lookat:=xlPart, _
            LookIn:=xlValues, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlPrevious, _
            MatchCase:=False)
            If Not c Is Nothing Then
                .Rows(c.Row).Delete

            End If
        Loop While Not c Is Nothing

    End With

    Application.ScreenUpdating = True
End Sub