TOP
VBA-Lección 7.2. Condiciones (Conditions)
Además de comprobar con las condiciones If...Then...Else y Select Case, también podemos utilizar las siguientes comprobaciones:
comparación de tipos de datos (funciones IsNumeric, IsDate, IsEmpty, operator Is Nothing);
comparación de tipos de variables (función VarType);
comparación de tiras de texto (operador Like).
Uso de condiciones para comprobar el tipo de datos
IsNumeric (la función que usamos en la lección anterior) devuelve VERDADERO (TRUE) si el valor es un número y FALSO (FALSE) si - no es un número:
- If IsNumeric(Range("A1")) = True Then
If IsNumeric(Range("A1")) = True Then 'SI EL VALOR ES UN NÚMERO...
El siguiente código produce el mismo efecto que el anterior (no necesitamos incluir = True porque la construcción en sí es una verificación de condición):
- If IsNumeric(Range("A1")) = True Then
If IsNumeric(Range("A1")) = True Then 'SI EL VALOR ES UN NÚMERO...
Si queremos comprobar si un valor no es un número, podemos hacerlo de dos formas:
- If IsNumeric(Range("A1")) = False Then
If IsNumeric(Range("A1")) = False Then 'SI EL VALOR NO ES UN NÚMERO...
- If Not IsNumeric(Range("A1")) Then
If Not IsNumeric(Range("A1")) Then 'SI EL VALOR NO ES UN NÚMERO...
Veamos algunas funciones más similares a IsNumeric:
- If IsDate(Range("A1")) Then
If IsDate(Range("A1")) Then 'SI EL VALOR ES LA FECHA...
- If IsEmpty(Range("A1")) Then
If IsEmpty(Range("A1")) Then 'SI ESTá VACÍO...
- If var_object Is Nothing Then
If var_object Is Nothing Then 'SI EL OBJETO NO ESTá DEFINIDO...
Uso de condiciones para verificar el tipo de una variable
Para ejecutar comandos basados en el tipo de una variable, necesitaremos usar la función VarType.
La lista de tipos de variables aparecerá tan pronto como ingresemos el signo "=":
- If VarType(my_variable) = vbInteger Then
If VarType(my_variable) = vbInteger Then 'ЯКЩО my_variable є типом змінної Integer ...
Valores de las constantes:
Constante |
Valor |
vbEmpty | 0 |
vbNull | 1 |
vbInteger | 2 |
vbLong | 3 |
vbSingle | 4 |
vbDoble | 5 |
vbMoneda | 6 |
vbFecha | 7 |
vbString | 8 |
vbObjeto | 9 |
vbError | 10 |
- If VarType(my_variable) = vbInteger Then
-
- If VarType(my_variable) = 2 Then
If VarType(my_variable) = vbInteger Then 'ЯКЩО my_variable є типом змінної Integer ...
'es idéntico a:
If VarType(my_variable) = 2 Then 'ЯКЩО my_variable є типом змінної Integer ...
Comparación de fuentes de texto (Like)
Un poco antes usamos el siguiente fragmento de código:
- my_variable = "Example 12345"
-
- If my_variable = "Example 12345" Then
my_variable = "Example 12345"
If my_variable = "Example 12345" Then '=> VERDADERO (TRUE)
En este caso las dos cintas son iguales, pero si queremos comprobar si la variable contiene el valor "12345"; sin considerar otros caracteres, debemos usar el comando Like, y el operador * (asterisco) antes y después del valor que buscamos.
El operador * (asterisco) se descifra como: cualquier carácter o conjunto de caracteres:
- my_variable = "Example 12345"
-
- If my_variable Like "*12345*" Then
my_variable = "Example 12345"
If my_variable Like "*12345*" Then '=> VERDADERO (TRUE)
El operador # (hash) se decodifica como: cualquier carácter numérico único del 0 al 9:
- my_variable = "Example 12345"
-
- If my_variable Like "Example 12###" Then
my_variable = "Example 12345"
If my_variable Like "Example 12###" Then '=> VERDADERO (TRUE)
¿Operador? (signo de interrogación) se descifra como: cualquier carácter único:
- my_variable = "Example 12345"
-
- If my_variable Like "?xample?1234?" Then
my_variable = "Example 12345"
If my_variable Like "?xample?1234?" Then '=> VERDADERO (TRUE)
También podemos usar caracteres específicos o un conjunto de caracteres de la misma manera:
- [abc] significa: cualquiera de los siguientes caracteres: a b c
- [a-g] se descifra como: cualquiera de los siguientes caracteres: a b c d e f g
- [369] se descifra como: cualquiera de los siguientes caracteres: 3 6 9
- [2-5] se descifra como: cualquiera de los siguientes símbolos: 2 3 4 5
- [?*#] se descifra como: cualquiera de los siguientes caracteres: ? * #
- my_variable = "Example 12345"
-
- If my_variable Like "[DEF]ejemplo 1234[4-7]" Then
my_variable = "Example 12345"
If my_variable Like "[DEF]ejemplo 1234[4-7]" Then '=> VERDADERO (TRUE)
¡Operador! (signo de exclamación) agregado después de [ significará: cualquier carácter que no esté entre corchetes:
- my_variable = "Example 12345"
-
- If my_variable Like "[!GHIJ]ejemplo 1234[!6-9]" Then
my_variable = "Example 12345"
If my_variable Like "[!GHIJ]ejemplo 1234[!6-9]" Then '=> VERDADERO (TRUE)
En este contexto, los caracteres en mayúsculas no equivalen a los mismos caracteres en minúsculas. Si no desea distinguir entre mayúsculas y minúsculas, simplemente escriba el comando Option Comparar texto al comienzo del módulo.