En VBA de Excel tenemos dos sentencias muy importante, If...Else y Select Case ambas sentencias son fundamentales en el desarrollo de programas, ya que permiten crear lógica condicional y tomar decisiones en función de ciertas condiciones. La elección entre utilizar If...Else o Select Case dependerá de la complejidad de la lógica a implementar y de cuál de las dos estructuras resulte más clara y legible en cada situación específica.
Sentencia If...Else
En programación, la sentencia If...Else se utiliza para tomar decisiones basadas en la evaluación de una condición booleana. Si la condición es verdadera, se ejecuta un bloque de instrucciones; de lo contrario, se ejecuta otro bloque de instrucciones. Esta estructura condicional permite que el flujo del programa se bifurque según el resultado de la evaluación de la condición. La estructura básica de ésta sentencia es:
If condicion Then
' Código a ejecutar si la condición es verdadera
Else
' Código a ejecutar si la condición es falsa
End If
Ejemplo sentencia If...Else
Para mostrarte lo potente que puede llegar hacer te presentamos el siguiente ejemplo. Dónde se desea ejecutar una sentencia que cumpla dos condiciones. Primero, si la cantiad está entre 0 a 20 que no exista descuento, pero si la cantidad es mayor o igual a 20 entces que se aplique un descuento del 10%.
Cantidad de 0 a 20 sin descuentoCantidad >=20 un descuento del 10%
Si aplicamos la sentencia If...Else en un formulario donde tengamos un control TextBox1 (Control donde programamos la sentencia) y una Etiqueta Label1 (dónde mostramos el resultado) el codigo que motrará el resultado es el que se muestra:
Private Sub TextBox1_Change()
Dim cantidad As Single
On Error Resume Next 'Omitimos errores en segundo plano
cantidad = Me.TextBox1.Value
If cantidad >= 20 Then
Me.Label1 = "El descuento es del 10" & "%" 'Cantidad >=20 (Verdadero)
Else
Me.Label1 = "Sin Descuento" 'Cantidad está entre 0 a 20 (Falso)
End If
End Sub
El resultado obtenido será como el que se muestra en la siguiente imagen:
Sentencia Select Case
La sentencia "Select Case" es útil cuando se deben evaluar múltiples valores para distintas acciones. Se compara una expresión con una serie de casos y se ejecuta el bloque de código correspondiente al caso que coincida con la expresión. La estructura base de esta sentencia es:
Select Case expresion
Case valor1
' Código a ejecutar si expresion = valor1
Case valor2
' Código a ejecutar si expresion = valor2
Case Else
' Código a ejecutar si no coincide con ninguno de los casos anteriores
End Select
Ejemplo sentencia Select Case
Ahora contamos con una serie de condiciones que debemos de evaluar, por ejemplo para una cantidad de 0 a 20 un descuento del 0%, para una cantidad de >= a 20 un descuento 10% y asi tenemos cuatro tipos de descuentos según sea la cantidad.
Cantidad de 0 a 20 Desceunto del 0%Cantidad >=20 un descuento del 10%Cantidad >=30 un descuento del 15%Cantidad >=40 un descuento del 20%Cantidad >=50 un descuento del 25%
Si aplicamos la sentencia Select Case en un formulario donde tengamos un control TextBox1 (Control donde programamos la sentencia) y una Etiqueta Label1 (dónde mostramos el resultado) el código que motrará el resultado es el que se muestra:
Private Sub TextBox1_Change()
Dim cantidad As Single
Dim descuento As Single
On Error Resume Next 'Omitimos errores en segundo plano
cantidad = Me.TextBox1.Value
Select Case cantidad
Case 0 To 19
descuento = 0
Case 20 To 29
descuento = 10
Case 30 To 39
descuento = 15
Case 40 To 49
descuento = 20
Case Else
descuento = 25
End Select
Me.Label1 = "El descuento es del " & descuento & "%"
End Sub
El resultado obtenido será como el que se muestra en la siguiente imagen:
Conclusión
En resumen, la sentencia "If" se usa para decidir entre dos opciones basadas en una condición simple, mientras que la sentencia "Select Case" es más adecuada para seleccionar entre múltiples opciones posibles. Ambas son herramientas fundamentales en la programación estructurada para controlar el flujo de ejecución de un programa de manera eficiente y organizada.
Publicar un comentario