2010-07-25 246 views
35

Tengo un objeto y dentro de ella me cheque quiero si algunas propiedades se establece en false, como:VBA Comprobar si la variable está vacía

If (not objresult.EOF) Then 
    'Some code 
End if 

Pero de alguna manera, a veces objresult.EOF es Empty, y cómo puedo comprobarlo ?

  • IsEmpty función es para las células Excel sólo
  • objresult.EOF Is Nothing - volver Empty
  • objresult.EOF <> null - volver Empty así!
+4

Sírvanse proporcionar algún código real - nos muestran qué tipo de objeto es 'objresult'. Y 'IsEmpty' no es específico para las celdas de Excel, es para las variables' Variant'. –

Respuesta

70

¿Cómo se prueba depende de Tipo de datos de la propiedad:

 
| Type         | Test       | Test2 
| Numeric (Long, Integer, Double etc.) | If obj.Property = 0 Then  | 
| Boolen (True/False)     | If Not obj.Property Then  | If obj.Property = False Then 
| Object        | If obj.Property Is Nothing Then | 
| String        | If obj.Property = "" Then  | If LenB(obj.Property) = 0 Then 
| Variant        | If obj.Property = Empty Then | 

Se nota que el Tipo de datos pulsando F2 para iniciar el Examinador de objetos y la búsqueda del objeto. Otra forma sería sólo tiene que utilizar la función TypeName: MsgBox TypeName(obj.Property)

15

Para comprobar si un Variant es nulo, es necesario hacerlo así:

Isnull(myvar) = True 

o

Not Isnull(myvar) 
10

Para un número, es complicado porque si una celda numérica es empty VBA le asignará un valor predeterminado de 0, por lo que es difícil para su código VBA distinguir la diferencia entre un cero introducido y una celda numérica en blanco.

La siguiente comprobación trabajó para mí para ver si había una real 0 entró en la celda:

If CStr(rng.value) = "0" then 
    'your code here' 
End If 
+0

Su muestra de código es una gran solución para distinguir 0 y Empty – Laurent

Cuestiones relacionadas