VBA错误处理:如何绕过有错误的行并停止代码?

时间:2014-12-31 14:12:06

标签: excel-vba error-handling excel-2010 vba excel

我有一些代码,其功能是提取所有有"失败"在通过/失败列中并将标准复制到另一个工作簿。我的问题是确定通过/失败的公式要求贷款号在其中一个条件列中,否则它返回"错误2023"的值。

使用我的下面的代码,由于"错误2023"我得到类型不匹配错误。我最初的想法是使用" On Error Resume Next"因此,如果我的值=错误2023,它将转到下一行并绕过该错误只拉动失败......但我是错误处理的新手,并且不确定如何写这个。这是解决这个问题的正确方法吗?

assignmentRow = 4
For x = 4 To lastRow

Windows("POC Results.xlsm").Activate

If Range("BE" & x).Value = "Fail" Then 'goes through workbook checking for "Fail"
Range("B" & x, "F" & x).Copy 'copies first criteria and pastes
Windows("Failed Audit Assigments.xlsm").Activate
Sheets("POC").Range("B" & assignmentRow).PasteSpecial Paste:=xlPasteValues

Windows("POC Results.xlsm").Activate
Range("BF" & x).Copy 'copies 2nd criteria and pastes
Windows("Failed Audit Assigments.xlsm").Activate
Sheets("POC").Range("G" & assignmentRow).PasteSpecial Paste:=xlPasteValues

assignmentRow = assignmentRow + 1
End If

Next x

2 个答案:

答案 0 :(得分:3)

根据您最近对其他答案的评论,您可以在检查单元格是否包含失败之前检查独立代码行上的错误。

    assignmentRow = 4
    For x = 4 To lastRow
        Windows("POC Results.xlsm").Activate
        If Not IsError(Range("BE" & x).Value) Then 'check for cell error value first
            If Range("BE" & x).Value = "Fail" Then 'goes through workbook checking for "Fail"
                Range("B" & x, "F" & x).Copy 'copies first criteria and pastes
                Windows("Failed Audit Assigments.xlsm").Activate
                Sheets("POC").Range("B" & assignmentRow).PasteSpecial Paste:=xlPasteValues

                Windows("POC Results.xlsm").Activate
                Range("BF" & x).Copy 'copies 2nd criteria and pastes
                Windows("Failed Audit Assigments.xlsm").Activate
                Sheets("POC").Range("G" & assignmentRow).PasteSpecial Paste:=xlPasteValues

                assignmentRow = assignmentRow + 1
            End If
        End If
    Next x

检查单元格中的错误值应该是独立的;没有与And的其他标准串联起来。

答案 1 :(得分:1)

您可以使用IsEmpty()函数来确定范围是否为空,作为测试,而不是处理错误。