我有一个变量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
答案 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