Curso Excel VBA y Macros – Cap. 17 – Instrucción If…Then…Else para la toma de decisiones
En este capítulo vamos a trabajar con una de las instrucciones más usadas en VBA, y de hecho en cualquier lenguaje de programación; la instrucción IF…THEN..ELSE. Todo el tiempo las aplicaciones están tomando decisiones en base a condiciones e interactuando con sus propios flujos de ejecución.
Veremos los siguientes temas:
-
Estructuras de control.
-
Instrucción If-Then de una sola línea.
-
Instrucción If-Then de una condición.
-
Instrucción If-Then de varias condiciones.
Ver video Capítulo 17 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Estructuras de control
Las estructuras de control, hablando del mundo de la programación, nos permite cambiar el flujo de ejecución de las instrucciones de un programa. Desde toma de decisiones usando condicionales If-Then, hasta manejo de colecciones con otras instrucciones como For each Next.
Instrucción If-Then-Else
Esta instrucción básicamente nos ayudará a ejecutar instrucciones o bloques de instrucciones en base a ciertas condiciones. Si una condición se cumple o devuelve True, entonces ejecutamos unas instrucciones; si no se cumple, evaluamos otra condición hasta dar una que devuelva True. En todo caso, si no se cumple ninguna condición, tendremos una serie de instrucciones por default.
Sintaxis If… Then… Else
La sintaxis básica de esta instrucción es:
IF condición THEN instrucciones ELSE otras instrucciones
Donde:
-
IF: Es la instrucción.
-
Condición: Es una expresión que será evaluada.
-
Instrucciones: De manera opcional podemos ejecutar acciones en caso de que la condición se cumpla.
-
ELSE: Se usa para definir que, si ninguna condición se cumple, haremos lo siguiente.
-
Otras instrucciones. Si ninguna condición se cumple, ejecutamos estas instrucciones por default.
Condicional If de una sola condición
La instrucción anterior también se puede representar en bloques:
If condición Then
[instrucciones]
Else
[Sino… instrucciones]
End if
Donde:
-
IF: Es la instrucción.
-
Condición: Es una expresión que será evaluada.
-
Then: Entonces.
-
Instrucciones: De manera opcional podemos ejecutar acciones en caso de que la condición se cumpla.
-
ELSE: Se usa para definir que, si ninguna condición se cumple, haremos lo siguiente.
-
Otras instrucciones. Si ninguna condición se cumple, ejecutamos estas instrucciones por default.
Condicional If de varias condiciones
Si tenemos varias condicione a evaluar, entonces usamos la siguiente estructura:
If condición Then
[instrucciones]
Elseif otra_condición Then
[en caso de… instrucciones]
Else
[Sino… instrucciones]
End If
Donde:
-
IF: Es la instrucción.
-
Condición: Es una expresión que será evaluada.
-
Then: Entonces.
-
Instrucciones: De manera opcional podemos ejecutar acciones en caso de que la condición se cumpla.
-
Elseif: Evaluamos otra condición.
-
ELSE: Se usa para definir que, si ninguna condición se cumple, haremos lo siguiente.
-
END IF: Cerramos el bloque de instrucciones IF.
-
ELSE: Se usa para definir que, si ninguna condición se cumple, haremos lo siguiente.
Ejemplos usando If… Then… Else
En este primer ejemplo mostramos un mensaje si un valor es mayor que 10
Option Explicit 'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Sub InstruccionIF() Dim Número1 As Byte Número1 = Application.Sheets("If then else").Range("B6").Value If Número1 > 10 Then Debug.Print "Mayor que 10" End Sub
En este ejemplo vamos a cambiarle el color al fondo de una celda dependiendo el valor de una variable.
Sub CambiarColor() Dim Número1 As Byte Número1 = Application.Sheets("If then else").Range("B6").Value If Número1 >= 10 Then Range("B6").Interior.Color = VBA.vbGreen Else Range("B6").Interior.Color = VBA.vbRed End If End Sub
En este último ejemplo evaluamos dos condiciones para asignar el descuento en base a una cantidad. Si ninguna de las condiciones se cumple, entonces asignamos cero a la variable Descuento.
Sub Comisiones() Dim Cantidad As Byte Dim Descuento As Double Cantidad = Range("A17").Value If Cantidad < 10 Then Descuento = 0 ElseIf Cantidad < 20 Then Descuento = 0.1 Else Descuento = 0.2 End If Range("C17").Value = Descuento End Sub
Descarga el archivo de ejemplo
017 – IF Then Else – Estructura de control.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.