为什么vba不处理错误2042

我有一个与Excel的值完整行的variablesfila

问题是,当我有#N/A Excel中,VBA采取Error 2042值。

我不能把这个值赋值给一个错误。 直到这一点一切正常,现在我正在试图定义一个On Error GotoFor循环中的下一个迭代,但我不知道为什么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 

这不是一个VBA错误 – 所以error handling将无法捕捉它。 要在写入数组之前使用IsError来检测此问题

下面的简单代码处理这个testing的错误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