为什么vba不处理错误2042

Jon*_*pez 5 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 
Run Code Online (Sandbox Code Playgroud)

bre*_*tdj 10

这不是VBA错误 - 因此错误处理将无法捕获它.要IsError在写入阵列之前检测此问题

下面的简单代码处理此测试的Error 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
Run Code Online (Sandbox Code Playgroud)