Uso del condicional If en VBA (if, elseif, else, end if)

A partir de este tutorial empezaremos a explorar las bondades de programar, una de ellas es hacer que el computador “tome decisiones” y esto se hace a través de los condicionales.

¿Qué es un condicional?

Un condicional es un cuestionamiento que se hace en el flujo de la información (una o más variables) y en el cual se pude discernir si cumple o no con una condición que se establezca, y en función de esa respuesta se tomarán acciones.

Figura 1. Diagrama condicional.

Es muy común que encontremos situaciones en las que cuando no se cumpla la condición dada, la decisión conlleve a una acción que nos regrese al punto inicial de cuestionamiento.

Figura 2. Diagrama condicional con re-evaluación.

Aunque parezca lógico, es importante dejar en claro que la única limitación sobre el tipo de preguntas es que las mismas puedan ser respondidas con la información que se maneje en el programa que estemos desarrollando. En este sentido, es posible hacer preguntas independientemente del tipo de variables, por ejemplo:

Tipo de variable Pregunta ejemplo
String ¿El número de caracteres es menor que el máximo permitido?
Date ¿La fecha de finalización es posterior a la fecha tope?
Integer ¿Es esta persona mayor de edad?
Double ¿Es el volumen de un objeto menor a la capacidad una caja?

Para poder lidiar con estas preguntas es necesario tener la información adecuada para cada caso, y la más importante tener una definición clara de la condición que se desea cumplir.

¿Cómo escribir un condicional en VBA?

Para escribir un condicional (If en VBA) debemos hacer el cuestionamiento sobre la variable a evaluar y luego dar la instrucción de qué hacer si se cumple la condición dada. Este cuestionamiento se hace a través del uso de la función o comando If.

Opcionalmente se puede dar la instrucción de hacer algún tipo de actividad en caso de no cumplir con la condición; en caso de no dar esta instrucción sencillamente no se hará ninguna acción. Tomemos un ejemplo de las entradas al cine según las edades de las personas; si es para un niño (lo definiremos como: edad menor o igual a 12 años) será entonces una entrada “Preferencial”, de lo contrario (edad mayor o igual a 12 años) será una entrada “Regular”, tal y como se muestra a continuación en la siguiente estructura IF:

Ejemplos de condicional If en VBA

If Range(“B2”) <= 12 Then Cuestionamiento (obligatorio)
     Range(“C2”) = “Preferencial” Resultado si se cumple
Else En caso de no cumplir (opcional)
     Range(“C2”) = “Regular” Resultado si no se cumple
End If Cierre (obligatorio)
Figura 3. Estructura de la función condicional en VBA.
Sub Tutorial4a_Condicional()
Dim edad As Integer
If Range("B2") <= 12 Then
  Range("C2") = "Preferencial"
Else
  Range("C2") = "Regular"
End If
End Sub

Condicionales If anidados en VBA

Es posible que luego de la evaluación de una variable, sea necesario hacer una segunda evaluación de otra condición; esto es lo que denominaríamos como “Condicional Anidado”, y la estructura será similar a la que mostramos a continuación:

Ejemplos de condicional If anidado en VBA

If Range(“B2”) > 12 ThenCuestionamiento 1 (obligatorio)
  If Range(“B2”) < 60 ThenCuestionamiento 2
Range(“C2”) = “Regular”Resultado si se cumple 2
ElseEn caso de no cumplir 2 (opcional)
Range(“C2”) = “Preferencial”Resultado si no se cumple 2
End IfCierre 2 (obligatorio)
ElseEn caso de no cumplir 1 (opcional)
  Range(“C2”) = “Preferencial”Resultado si no se cumple 1
End IfCierre 1 (obligatorio)

Para hacerlo más claro, retomemos el ejemplo de la entrada al cine: los tickets preferenciales pueden ser para niños o adultos de tercera edad; una forma de evaluar sería con este orden:

  • Que la persona sea un adulto: edad mayor a 12 años, lo cual excluye a los niños (entrada preferencial).
  • Que el adulto sea menor a 60 años, condición que excluye a las personas de tercera edad (entrada preferencial).

El cumplimiento positivo de estas dos condiciones elegirá a una persona entre 13 y 59 años, que son los que pagarían la entrada “Regular”. Ahora puedes verlo más claramente si lo llevamos a un diagrama de flujo y código en VBA:

Figura 4. Condicional VBA anidado .
Sub Tutorial4b_Condicional()
Dim edad As Integer
If Range("B2") > 12 Then
  If Range("B2") < 60 Then
    Range("C2") = "Regular"
  Else
    Range("C2") = "Preferencial"
  End If
Else
  Range("C2") = "Preferencial"
End If
End Sub

Condicionales múltiples (If Elseif) en VBA

Existe una modalidad que llamaremos múltiple condicional, que es muy parecida al condicional anidado, la diferencia principal es que el condicional secundario se hace sólo si NO se cumple el primer condicional. Esta opción se utiliza mediante la instrucción Elseif en VBA y debe ir seguido a un If principal, tal y como se muestra en la siguiente estructura:

Ejemplos de condicional múltiple en VBA

If Condición A Then Cuestionamiento A (obligatorio)
     Decisión positiva de A Resultado si se cumple
Elseif Condición B Then Cuestionamiento B (obligatorio)
     Decisión positiva de B Resultado si se cumple
Else En caso de no cumplir A o B (opcional)
     Decisión negativa de A y B Resultado si no se cumple
End If Cierre (obligatorio)

La cantidad de Elseif  o condicionales adicionales no tiene límites, todo depende de la evaluación y las decisiones que ese deseen tomar.

Conociendo ya la estructura, es momento de revisar el diagrama de flujo con el código VBA:



Figura 5. Condicional múltiple en VBA.
Sub Tutorial4c_Condicional()
If Range("B2") > 59 Then
  Range("C2") = "Preferencial"
ElseIf Range("B2") < 13 Then
  Range("C2") = "Preferencial"
Else
  Range("C2") = "Regular"
End If
End Sub

Uso de Or y And (operadores lógicos) en condicionales VBA

En algunos casos es posible hacer que un mismo condicional evalúe dos o más requisitos a través de los comparadores lógicos And (“y”) y Or (“o”).

El operador And aprueba la condición solo si se cumple la primera “Y” la segunda condición a la vez. Por ejemplo: ¿Es la edad mayor a 12 años y menor a 60?

Ejemplos de uso de Or y And en condicionales de VBA



Figura 6. Uso del operador lógico “And” en VBA.
Sub Tutorial4d_Condicional()
If Range("B2") > 12 And Range("B2") < 60 Then
  Range("C2") = "Regular"
Else
  Range("C2") = "Preferencial"
End If
End Sub

Similarmente, el operador Or considerará cierta la condición evaluada si se cumple al menos una de las propuestas; por ejemplo: “la entrada Preferencial es para personas con edades menores de 13 años O mayores de 59 años.


Figura 7. Uso del operador lógico “Or” en VBA.
Sub Tutorial4e_Condicional()
If Range("B2") < 13 Or Range("B2") > 59 Then
  Range("C2") = "Preferencial"
Else
  Range("C2") = "Regular"
End If
End Sub

Al igual que los condicionales anidados y múltiples, no existe limitación sobre la cantidad de operadores lógicos y sus combinaciones.

Como puedes ver, hay más de una forma de programar una instrucción de decisión en el computador, algunas maneras son más compactas que otras, como lo vimos en el ejemplo que desarrollamos durante este tutorial.

Con la práctica, irás adquiriendo destrezas que te permitirán hacer un código de programación más compacto y a prueba de errores.

Quieres saber más? Contáctanos…

Uso del condicional If en VBA (if, elseif, else, end if)

También te puede interesar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *