CONDICIONAL EN FUNCIÓN DEL TIPO

IsNumeric (es la función que usamos en la última página) devuelve TRUE si el valor es numérico y FALSE si no lo es:

If IsNumeric(Range("A1")) = True Then 'Si el valor es numérico ...

A continuación, el código tiene el mismo resultado que la versión anterior (no tenemos que incluir el = True, ya que es el valor por defecto para consultar si una condición es verdadera):

If IsNumeric(Range("A1")) Then 'SI EL VALOR ES NUMÉRICO ...

Pero si lo queremos comprobar si el valor NO es numérico, podríamos hacerlo de alguna de las dos maneras siguientes:

If IsNumeric(Range("A1")) = False Then 'SI EL VALOR NO ES NUMÉRICO ...

BORRAR ESTE ESPACIO

If Not IsNumeric(Range("A1")) Then 'SI EL VALOR NO ES NUMÉRICO ...

Veamos algunos ejemplos de otras funciones parecidas a IsNumeric:

If IsDate(Range("A1")) Then 'SI EL VALOR ES UNA FECHA ...


If IsEmpty(Range("A1")) Then 'SI ESTÁ VACÍO ...


If var_objeto Is Nothing Then 'SI EL OBJETO NO ESTÁ FIJADO ...

CONDICIONAL BASADO EN EL TIPO DE UNA VARIABLE

Para ejecutar comandos en función del tipo de una variable (Variant), deberemos emplear la función VarType.

La lista de tipos se mostrará una vez que hayamos escrito el operador "=:".


If VarType(mi_variable) = vbInteger Then 'SI mi_variable es de tipo Integer ...

Valores de las constantes:

ConstanteValor
vbEmpty0
vbNull1
vbInteger2
vbLong3
vbSingle4
vbDouble5
vbCurrency6
vbDate7
vbString8
vbObject9
vbError10

If VarType(mi_variable) = vbInteger Then 'SI mi_variable es de tipo Integer ...
'Idéntico a:
If VarType(mi_variable) = 2 Then 'SI mi_variable es de tipo Integer ...

UNA CONDICIONAL QUE SE BASA EN LA COMPARACIÓN DE DOS CADENAS DE CARACTERES

Hasta ahora, hemos visto lo siguiente:

mi_variable = "Ejemplo 12345"

If mi_variable = "Ejemplo 12345" Then ' => TRUE

Aquí, las dos cadenas son idénticas, no es nada fuera de lo común...

Sin embargo, si se desea comprobar si la variable contiene el valor "12345" sin tener en cuenta ningún otro carácter, habría que emplear el comando "Like" y un operador "*" antes y después del valor buscado.

El operador "*" representa: cualquier carácter o varios caracteres:

mi_variable = "Ejemplo 12345"

If mi_variable Like "*12345*" Then ' => TRUE

El operador "#" puede reemplazar un carácter numérico del 0 al 9:

mi_variable = "Ejemplo 12345"

If mi_variable Like "Ejemplo 45###" Then ' => TRUE

El operador "?" puede reemplazar a cualquier carácter:

mi_variable = "Ejemplo 12345"

If mi_variable Like "?ejm?1234?" Then ' => TRUE

Además, podemos utilizar un carácter específico o un rango de caracteres del mismo modo:

  • [abc] representa uno de los siguientes caracteres: a b c
  • [a-g] representa uno de los siguientes caracteres: a b c d e f g
  • [369] representa uno de los siguientes caracteres: 3 6 9
  • [2-5] representa uno de los siguientes caracteres: 2 3 4 5
  • [?*#] representa uno de los siguientes caracteres: ? * #

mi_variable = "Ejemplo 12345"

If mi_variable Like "[DEF]xample 1234[2-8]" Then ' => TRUE

El carácter "!" que se añade después [ reemplazará a cualquier carácter que no esté contenido en la expresión entre corchetes:

mi_variable = "Ejemplo 12345"

If mi_variable Like "[!l56]ejemplo 1234[!3-5]" Then ' => TRUE

El mismo carácter en mayúsculas no es equivalente a un carácter en minúsculas en este contexto. Si no quiere hacer distinciones entre caracteres en mayúsculas y minúsculas, incluya un comando de "Option Compare Text" al principio del módulo.