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 '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 '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 'SI EL VALOR NO ES UN NÚMERO...
    
    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 'SI EL VALOR ES LA FECHA...
    
    If IsEmpty(Range("A1")) Then 'SI ESTá VACÍO...
    
    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 'ЯКЩО my_variable є типом змінної Integer ...
    

    Valores de las constantes:

    Constante Valor
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDoble5
    vbMoneda6
    vbFecha7
    vbString8
    vbObjeto9
    vbError10
     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 '=> 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 '=> 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 '=> 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 '=> VERDADERO (TRUE)
    

    También podemos usar caracteres específicos o un conjunto de caracteres de la misma manera:

    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 '=> 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.