2012-07-09 21 views
5

Quiero verificar un valor de #N/A en Excel con VBA. Así que después de algunas investigaciones, he hecho este código:compruebe un valor "# N/A" en vba en un rango

Set MyTab = Range(name) 
If (Not IsEmpty(MyTab.value)) And (MyTab(i, j).value <> CVErr(xlErrNA)) Then 
    Call BuildRequest(False, id, MyTab, i, j) 
End If 

Pero cuando pasó el MyTab(i, j).value <> CVErr(xlErrNA) tengo un error 13(type error) y no encontrar qué.

¿Alguien puede ayudarme por favor?

Respuesta

9

primer lugar, debe comprobar que la célula contiene un error:

If IsError(MyTab(i, j).Value) Then 
    If MyTab(i, j).Value <> CVErr(xlErrNA) Then 

A menos que usted quiere saber el tipo de error (# N/A, # DIV/0 !, etc.), se como bien podría reemplazar su prueba con:

If (Not IsEmpty(MyTab.value)) And (Not IsError(MyTab(i, j).value)) Then 

Si es necesario comprobar el tipo de error, se puede escribir:

Dim shouldBuildRequest As Boolean 

shouldBuildRequest = Not IsEmpty(MyTab.value) 
If IsError(MyTab(i, j).Value) Then 
    shouldBuildRequest = shouldBuildRequest AND (MyTab(i, j).Value <> CVErr(xlErrNA)) 
End If 

If shouldBuildRequest Then 
    Call BuildRequest(False, id, MyTab, i, j) 
End If 
+0

+ 1 Agradable :) –

+0

Gracias por ello :). Usted a Siddharth Rout –

4

Otra w ay para comprobar el error

If CVErr(MyTab(i, j).Value) = CVErr(xlErrNA) 
+1

Pfffff .... ¡Siempre encuentra una mejor manera! ;-) – assylias

+0

Estoy tratando de hacer una comprobación de error similar para las celdas combinadas ("B6: D6"), estoy usando el siguiente código y aparece el error. Si CVErr (ws.Range ("B6"). MergeArea.Cells (1, 1) .Value) = CVErr (xlErrNA) Entonces – Isu

Cuestiones relacionadas