2012-12-07 13 views
5

Ho una variabile fila con una linea completa con i valori di ExcelPerché VBA pretende molto Gestione degli errori 2042

Il problema è quando in Excel ho #N/A, VBA assume tale valore come Error 2042.

Impossibile assegnare questo valore a valore produce un errore. Fino a questo punto tutto è ok, ora sto cercando di definire un On Error Goto per passare alla successiva iterazione nel ciclo For, ma non so perché VBA non gestisce l'errore.

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

Perché usi Valore2? (mai sentito nominare) – CustomX

+5

È più efficiente quel valore, perché il valore controlla se i valori sono dati o tipi di valuta http://msdn.microsoft.com/en-us/library/office/aa215938%28v=office.11 % 29.aspx –

risposta

10

Questo non è un errore di VBA - così la gestione degli errori non prenderlo. Per rilevare questo problema utilizzare IsError prima di scrivere al vostro array

Il codice semplice di seguito gestisce la Errore 2042 problema con questo test

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

Hey, grazie. Risolve il mio problema Non sapevo "errore 2042" È un diffritto tipo di errore. –