Toma de decisiones mediante los condicionales If...Then e If...Then...Else.
Ya sabes cómo hacerle preguntas a VBA (a través de los operadores de comparación), pero aún falta aprender a hacer un uso práctico de sus respuestas (True o False).
En la programación con macros, necesitamos un mecanismo que le permita a Excel ejecutar un bloque de código solo si se cumple una condición, e ignorarlo si no se cumple.
Es exactamente como en la vida real: realizas ciertas acciones dependiendo de una condición específica. Por ejemplo, sales a caminar si el clima es bueno, o te quedas en casa si está húmedo y frío.
Para tomar este tipo de decisiones dentro de una macro, VBA ofrece una estructura especial llamada instrucción condicional (o sentencia condicional), encabezada por la palabra clave If.
La instrucción If (Si) permite evaluar una condición lógica. Si la condición resulta ser verdadera (True), el programa ejecutará el bloque de código que esté dentro. Si la condición es falsa (False), VBA simplemente ignorará esas líneas y continuará con la ejecución del programa.
' Sintaxis General
If Condición Then
' Instrucciones que se ejecutan solo si es Verdadero
End If
' Ejemplo Práctico: Aumentar un bono si la nota es perfecta
Dim Nota As Integer
Nota = Range("A1").Value
If Nota = 20 Then
Range("B1").Value = "¡Felicidades! Tienes un bono adicional."
End If
En muchos casos necesitamos tomar acciones en ambas situaciones: tanto si la condición se cumple como si no. La cláusula Else (Sino) define el bloque de código alternativo que debe ejecutarse únicamente cuando la condición evaluada es falsa (False).
' Sintaxis General
If Condición Then
' Instrucciones si la condición es Verdadera
Else
' Instrucciones si la condición es Falsa
End If
' Ejemplo Práctico: Determinar estado académico
Dim Nota As Double
Nota = Range("A1").Value
If Nota >= 11 Then
Range("B1").Value = "Aprobado"
Else
Range("B1").Value = "Desaprobado"
End If
A continuación, resuelve los ejercicios utilizando las estructuras condicionales en VBA según corresponda.
Problema: Un empleado recibe un bono extraordinario de $50 si trabajó exactamente 30 días al mes. Lee los días laborados desde la celda B1. Si cumple la condición (Dias = 30), escribe el monto de 50 en la celda B2.
| A | B | |
|---|---|---|
| 1 | Días Trabajados | 30 |
| 2 | Monto Bono ($) | ? |
Problema: Una aplicación debe verificar la edad ingresada en la celda B5. Si la edad es mayor o igual a 18 años (Edad >= 18), debe escribir el texto "Permitido" en la celda B6. En caso contrario (Else), debe escribir el texto "Denegado".
| A | B | |
|---|---|---|
| 5 | Edad Registrada | 15 |
| 6 | Estado Acceso | ? |