为什么vba不处理错误2042

时间:2012-12-07 10:49:21

标签: excel vba excel-vba

我有一个变量fila,其中包含Excel的值的整行

问题是当我在Excel中#N/A时,VBA会将此值视为Error 2042

我无法将该值分配给valor 会产生错误。在此之前一切正常,现在我正在尝试定义On Error Goto以进入For循环中的下一次迭代,但我不知道为什么VBA不处理错误。

Do While Not IsEmpty(ActiveCell)

    txt = ActiveCell.Value2
    cell = ActiveCell.Offset(0, 1).Value2       
    fila = Range("C20:F20")

    For j = 1 To UBound(fila, 2)
        On Error GoTo Siguiente
        If Not IsEmpty(fila(1, j)) Then            
            valor = fila(1, j)
            cmd = Cells(1, j + 2).Value2
            devolver = function1(cmd, txt, cell, valor)
            arrayDevolver(p) = devolver
            p = p + 1                
        End If
Siguiente:
    Next
Loop 

1 个答案:

答案 0 :(得分:10)

这不是VBA错误 - 因此错误处理不会捕获它。要在检测到此问题之前使用IsError,请先写入数组

下面的简单代码使用此测试处理错误2042 问题

Sub Test()
    Dim varIn As Variant
    [a1].FormulaR1C1 = "=NA()"
    If IsError([a1].Value2) Then
        varIn = "skip record"
    Else
        varIn = [a1].Value2
    End If
End Sub