3. Condicionales: If y Select Case
En esta lección aprenderás a:
- Tomar decisiones con
If … Then … Else … End If. - Encadenar condiciones con
ElseIf. - Simplificar comparaciones múltiples con
Select Case. - Leer el valor de una celda y ejecutar código según su contenido.
If … Then … Else
ElseIf — múltiples condiciones
Select Case — comparar contra varios valores
Operadores lógicos: And, Or, Not
Vista tipo Excel: la primera fila muestra las letras de columna; la primera columna muestra los números de fila. En las celdas con fórmula (=...), cada referencia lleva un color distinto. Clic en la referencia: resalta solo esa celda. Clic en el resto de la celda (por ejemplo el = o los operadores): resalta todas las celdas citadas. Repetir el mismo gesto sobre lo ya resaltado lo oculta.
Combinar condiciones en VBAResumen
Los paréntesis ayudan a agrupar condiciones complejas: If (a > 0 And b > 0) Or c = True Then
| A | B | C | |
|---|---|---|---|
| 1 | Operador | Significado | Ejemplo |
| 2 | And | Ambas condiciones deben ser True | If edad >= 18 And pais = "MX" Then |
| 3 | Or | Al menos una condición debe ser True | If rol = "Admin" Or rol = "Super" Then |
| 4 | Not | Invierte el resultado | If Not activo Then |
| 5 | <> | Distinto de | If nombre <> "" Then |
Practica en Excel
Abre Excel (o copia los datos con el botón de la tabla), sigue los pasos y comprueba el resultado en tu hoja.
- Escribe un valor numérico en B2 y ejecuta CalificarNota() con distintos valores.
- Agrega un código de departamento en A2 ("VEN", "ADM", "TEC") y ejecuta MostrarDepartamento().
- Añade un Case "MKT" para Marketing en el Select Case.
- Crea una Sub que use And para verificar que dos celdas tengan valores mayores que 0.
- Prueba IsNumeric() en una condición If para validar que A1 tenga un número antes de procesar.
Ejercicios de práctica
Ejercicio 1 — Par o Impar
Escribe un número en A1. Crea una Sub que lo lea y escriba en B1 "Par" si es divisible por 2 (Mod 2 = 0), o "Impar" en caso contrario.
Ver solución sugerida
Ejercicio 2 — Temperatura
Lee una temperatura de B1. Escribe en C1: "Calor" si supera 30°C, "Frío" si es menor de 10°C, y "Templado" en cualquier otro caso.
Ver solución sugerida
Ejercicio 3 — Celda vacía
Crea una Sub que verifique si A1 está vacía (Range("A1").Value = "") y muestre un aviso con MsgBox pidiendo que se complete ese campo.
Ver solución sugerida
Ejercicio 4 — Signo del número
Escribe un número en A1. Crea una Sub que verifique si es positivo, negativo o cero, y escriba el resultado en B1.
Ver solución sugerida
Ejercicio 5 — Clasificador por código
Escribe un código de producto en A1. Usa Select Case: "P" → "Perecedero", "D" → "Duradero", "E" → "Electrónico". Cualquier otro → "Sin clasificar". Escribe el resultado en B1.
Ver solución sugerida
Ejercicio 6 — Rango de notas con letras ⭐⭐
Escribe una nota (0–100) en A1. Clasifícala con ElseIf: A (90–100), B (80–89), C (70–79), D (60–69), F (menor de 60). Escribe la letra en B1.
Ver solución sugerida
Ejercicio 7 — Comparar A1 y B1 ⭐⭐
Lee los valores de A1 y B1. Escribe en C1: "A1 mayor", "B1 mayor" o "Iguales" según corresponda.
Ver solución sugerida
Ejercicio 8 — Validar con And ⭐⭐
Escribe dos valores en A1 y B1. Crea una Sub que use And para verificar que ambos sean mayores que 0. Si lo son, escribe el producto en C1; si no, muestra un error con MsgBox.
Ver solución sugerida
Ejercicio 9 — Clasificador de edades ⭐⭐
Escribe una edad en A1. Clasifícala: menor de 18 → "Menor de edad", 18–25 → "Joven", 26–60 → "Adulto", mayor de 60 → "Senior". Escribe el resultado en B1.
Ver solución sugerida
Ejercicio 10 — Select Case con rangos ⭐⭐
Escribe un mes (1–12) en A1. Usa Select Case con rangos (Case 12, 1, 2) para clasificarlo como: "Invierno" (12,1,2), "Primavera" (3,4,5), "Verano" (6,7,8) u "Otoño" (9,10,11).
Ver solución sugerida
Ejercicio 11 — IsNumeric como validación ⭐⭐⭐
Escribe texto o número en A1. Crea una Sub que use IsNumeric() para verificar si el contenido es numérico. Si lo es, calcula su raíz cuadrada (Sqr()); si no, muestra un error amigable.
Ver solución sugerida
Ejercicio 12 — Clasificar ventas ⭐⭐⭐
Escribe un monto en A1. Crea un clasificador: menor de 1 000 → "Venta baja", 1 000–9 999 → "Venta media", 10 000 o más → "Venta alta". Muéstralo en B1 y además cambia el fondo de B1 al color correspondiente (rojo/amarillo/verde).
Ver solución sugerida
Ejercicio 13 — Día de la semana ⭐⭐⭐
Usa Weekday(Now()) para obtener el número del día actual (1=Dom … 7=Sáb). Con Select Case, muestra el nombre del día en español y si es día laboral o fin de semana.
Ver solución sugerida
Ejercicio 14 — Validar rango con And ⭐⭐⭐
Escribe un número en A1. Crea una Sub que verifique que está entre 1 y 100 inclusive usando And. Si está en rango, calcula su porcentaje sobre 100 y escríbelo en B1. Si no, muestra un error.
Ver solución sugerida
Ejercicio 15 — Semáforo de indicador ⭐⭐⭐
Escribe un porcentaje en A1. Colorea la celda B1: rojo si el porcentaje es menor de 40, amarillo si está entre 40 y 74, verde si es 75 o más. Además escribe el texto "Crítico", "En proceso" o "Logrado" en B1.