2012-12-07 438 views
5

我有一个变量fila与Excel的价值观为什么VBA犯规处理错误2042

问题是,当在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

为什么使用值2之前使用IsError? (从来没有听说过) – CustomX

+5

它更有效的价值,因为值检查值是数据还是货币类型http://msdn.microsoft.com/zh-cn/library/office/aa215938%28v=office.11 %29.aspx –

回答

10

这不是VBA错误 - 所以错误处理将无法捕捉它。为了检测这种问题,写你的阵列

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

嘿谢谢它解决我的问题我不知道“错误2042”它是一种不同类型的错误。 –