leonardo alies fuentes
Luis Guzmán
LUIS ANGEL GALLEGO VILLA
Cuando necesitas que tu código tome decisiones basadas en múltiples escenarios posibles, la estructura Select Case en VBA se convierte en una herramienta fundamental. A diferencia de los condicionales simples, esta instrucción te permite organizar de forma clara y ordenada cada uno de los caminos que puede tomar tu programa dependiendo del valor de una variable.
¿Qué es Select Case y por qué es importante ser exhaustivo?
Select Case es una instrucción que permite evaluar una variable y definir qué acciones ejecutar según el valor que contenga [01:00]. En lugar de anidar múltiples condicionales, se listan los casos posibles de manera estructurada. Cada caso lleva sus propias instrucciones, lo que hace el código más legible y fácil de mantener.
Un punto clave es la exhaustividad: al usar Select Case, debes asegurarte de cubrir todos los escenarios posibles [01:15]. Si omites algún caso, tu función podría no devolver resultado o generar errores inesperados.
¿Cómo construir una función con Select Case paso a paso?
El ejercicio consiste en crear una función que reciba tres números enteros, los sume y determine si el resultado es negativo, cero o positivo [01:30].
¿Cómo se define la función y sus variables?
Primero se declara la función pública con tres argumentos de tipo integer:
vba Public Function SC(A As Integer, B As Integer, C As Integer) As String
El tipo de retorno es String porque el resultado será un texto descriptivo como "negativo", "cero" o "positivo" [02:05]. Luego se declara una variable para almacenar la suma:
vba Dim suma As Integer suma = A + B + C
Si los números tuvieran decimales, sería necesario usar tipos de dato como Single o Double en lugar de Integer [02:30]. De lo contrario, VBA cortaría la parte decimal y el resultado no sería preciso.
¿Cómo se escriben los casos dentro de Select Case?
Después de calcular la suma, se abre la estructura indicando qué variable se va a evaluar [03:05]:
vba Select Case suma Case Is < 0 SC = "negativo" Case Is = 0 SC = "cero" Case Else SC = "positivo" End Select
Case Is > 0, usar Case Else garantiza que no quede ningún escenario sin atender.Recuerda que los textos siempre van entre comillas dobles para que VBA no los interprete como instrucciones [03:30].
¿Cómo se cierra correctamente la estructura?
Así como toda función se cierra con End Function, la instrucción Select Case se cierra con End Select [04:30]. Olvidar este cierre generará un error de compilación.
¿Cómo probar la función en la ventana de inmediato?
La ventana de inmediato (Immediate Window) permite ejecutar funciones rápidamente sin necesidad de escribirlas en una celda [04:45]. Se usa el signo de interrogación seguido de la función:
?SC(-8, 5, 0) devuelve "negativo" porque -8 + 5 + 0 = -3.?SC(2, -1, -1) devuelve "cero" porque 2 + (-1) + (-1) = 0.?SC(3, 4, 5) devuelve "positivo" porque 3 + 4 + 5 = 12.Estos tres resultados confirman que la función cubre correctamente todos los escenarios posibles [05:10].
Ahora es tu turno de practicar. Puedes crear una función que determine si un número es par o impar, o que compare un valor con tu edad. Comparte en los comentarios qué caso elegiste y cómo quedó tu código.
leonardo alies fuentes
Luis Guzmán
LUIS ANGEL GALLEGO VILLA
Andy Gregorio
Juan Fernando Yepes Muñoz
Gonzalo Daniel Cayunao Erices
Jorge Hernandez
Keren Pingo Mezones
Carlos Andrés Castro Moreno
Julio Cesar Campos Rimarachín
Videl Chavez Benavente
Pablo Perez Dotel
Julian Alberto Martínez Agudelo
ANA MARIA VALENCIA GALLEGO
LUIS ANGEL GALLEGO VILLA
Willy Alonso Neyra Mauricio
JUAN PABLO HENAO GOMEZ
Alvaro Villanueva
LUIS ANGEL GALLEGO VILLA
Andoni Aranaga
Andres Felipe Cogollo Hincapie
Yulieth Guevara
Juan Pablo Quispe Molina
Julián Cárdenas
Santiago Correa
Braylin Alexander Jiménez Reynoso
Daniel Martínez
Edwin Agudelo
Ioannes Schroeder
Oscar Julian Montañez Macana
Jose Martin Sainpere Vegas
Lisbeth Sena
David Esteban Puentes Barrero
Mario Hidalgo
un caso para el cual te respondo automaticamente si salimos o no de fiesta (jaajjaa)
' prueba si es mayor de edad y puede salir a tomar Public Function edad() As Integer Dim nacimiento As Integer Dim a Dim b Dim año As Integer Dim tomar año = InputBox("ingrese el año de nacimiento", "Año de nacimiento") nacimiento = 2022 - año a = MsgBox("tu edad es de " & nacimiento, , "edad") Select Case nacimiento Case Is >= 19 tomar = " a tomar" Case Else tomar = " no puedes tomar" End Select b = MsgBox("si deseas pero" & tomar, , "salimos") End Function
con cuantas has salido a tomar?
Hola: Según veo este código, declaraste las variables a y b para mostrar un mensaje, lo cual no sería necesario
Es buena a explicación, pero no me queda claro como se usará en la hoja de excel. Es decir sólo se ejecuta en Visual Basic pero no me queda claro como usalro en la hoja de calculo.
Hola👋🏽
Aún no he ido a intentarlo en mi Excel, pero supongo que al ser una función, si escribes en una casilla de la hoja =SC(2,4,5) , Excel ejecutará la función y te saldrá escrito en la casilla positivo o negativo, etc.
Espero poder haberte ayudado!
El ejemplo es una Función, entonces la puedes llamar en tu hoja de cálculo como si fuera una función normal, usando los argumentos necesarios, por ejemplo si tienes 3 celdas, puedes ejecutar la función y usar esas 3 celdas como argumentos y ver el resultado en la celda en la cual estás ejecutando la función.
Este curso es para aquel que no haya programado nunca, muy básico Deberían tratar ejemplos mas complejos de la vida diaria de una empresa y con mas contenido y que dure mas tiempo (2horas ¿?).
por eso está dentro de la ruta de DATA ANALYST
Pero es que la idea de estos cursos no es que le resuelvan las actividades diarias en su trabajo, si no que usted tenga las herramientas para aplicarlo en esos ambientes que usted insinua tiene en su trabajo XD, yo tambien soy desarrollador pero no por eso desmerito esta clase de contenido que de por si es muy bueno!
¡Calculadora de IMC-Índice de Masa Corporal!, se aceptan observaciones-GRACIAS
Lo probé y todo va bien, me gusto. Buen trabajo
Este es un caso en el que elijo que hacer si eres mayor o menor de edad
Public Function edad1() As Integer Dim año_nacimiento As Integer Dim edad As Integer Dim a Dim mayor_edad As String Dim b año_nacimiento = InputBox("Digite su año de nacimiento", "Año de nacimiento") edad = 2022 - año_nacimiento a = MsgBox("Su edad es de " & edad, , "Años de edad") Select Case edad Case Is >= 18 mayor_edad = "tienes que tener cuidado" Case Else mayor_edad = "solo toma juguito de naranja" End Select b = MsgBox("El consumo de alcohol es perjudicial para la salud, " & mayor_edad, , "Ley 42-01") End Function
Hola Pablo.
Excelente tú ejercicio. Me tomé el atrevimiento de modificar el codigo en la ecuación para calcular la edad y así no tener que modificar la fecha actual constantemente.
edad = Year(Now) - año_nacimiento
Si corro tu ejemplo me sale un error, pues estás definiendo edad como una función y como una variable. Me queda además la duda de si la función que definimos es la edad, por qué en el select case no utilizas la función edad, sino la variable mayor_edad.
Considero chévere el curso, pero es más bien algo así como un Curso de Excel Básico con Macros de VBA, mucha fundamentación, la cual no se aplica en el manejo de datos en una hoja.
Creé una subrutina para detectar peruanos:
Faltó colocarle "Conoce al Chorrillano Palacios"
Aquí hice un código para ver si es par o no el número:
Public Function par(A As Integer) As String Dim modulo As Double modulo = A Mod 2 Select Case modulo Case Is = 0 par = "Es par" Case Else par = "No es par" End Select
End Function
¡Buena Esa!
Excelente, gracias por el aporte!
Ahi va el reto
Public Function edad(A As Integer, B As Integer) As String Dim años As Integer años = A + B Select Case años Case Is < 30 edad = " menor" Case Is = 30 edad = "Contemporaneos" Case Else edad = "Mayor" End Select End Function
Quise hacer un pequeño juego para adivinar un número aleatorio del 1 al 3
Public Function SC(Numero As Integer) As String Dim a Numero = InputBox("Num1", "Adivina el número de 1 al 3") Random = Int((rnd * 3) + 1)
Select Case Numero Case Is < Random SC = "Perdiste, " & "el número escondido era: " & Random Case Is = Random SC = "¡GANASTE!" & "el número escondido era: " & Random Case Else SC = "Perdiste, " & "el número escondido era: " & Random
a = MsgBox(SC)
End Select End Function
ASIGNAR MACRO A UN BOTON Desarrollamos el mismo ejercicio de la clase aplicando una subrutina y luego lo asignamos a un BOTON. Insertamos los numeros ingresados y el resultado de la suma en la hoja1.
Por sí tienen problemas con las macros, en donde les manda un mensaje que no están habilitadas:
Para habilitar macros en Excel, debes cambiar la configuración de seguridad de macros en las opciones de Excel. Aquí te explico cómo hacerlo paso a paso:
Habilitar Macros en Excel
Habilitar Macros para un Archivo Específico
Si no deseas cambiar la configuración global de seguridad de macros, también puedes habilitar macros solo para un archivo específico.
Conclusión
Habilitar macros puede ser necesario para trabajar con funciones avanzadas y automatización en Excel, pero es importante ser cauteloso debido a los riesgos de seguridad que pueden representar las macros maliciosas. Cambia la configuración solo si confías en el origen de los archivos con macros.
Comparto mi ejercicio de Select Case para saber si un numero es par o impar
Hola bro, cre en la priemera parte tienes un error ya que nunca defines que valor será el de a función** "Utilidad"** y en la parte de abajo no reservaste la varibale "UtilidadT" al igual que las anteriores, fuera de eso el codigo funciona bien, asi queda con los puntos comentados:  As String
'
' Función para identificar Hipertensión
' Se establece variable de input
Dim TAS As Integer
TAS = InputBox("Ingresa tu tensión arterial sistólica (El número mayor)", "Diagnóstico de Hipertensión")
' SELECT con casos para cada categoría de Diagnóstico, incluyendo: Normal, Prehipertensión, Grado I, Grado II y Urgencia
Select Case TAS
Case Is < 130
dx = "Tensión arterial normal"
Case Is < 140
dx = "Prehipertensión"
Case Is < 160
dx = "Hipertensión Grado I"
Case Is < 180
dx = "Hipertensión Grado II"
Case Is > 179
dx = "Urgencia Hipertensiva"
End Select
Dim ms
ms = MsgBox("De acuerdo con la Tensión sistólica reportada, tu diagnóstico es: " & dx, , "Diagnóstico de Hipertensíon")
End Function
Que excelente ejercicio, te felicito, muy util para el diario.
Select Case es una estructura en Visual Basic que permite evaluar y manejar distintos casos de una variable en funciones o subrutinas. Cada caso se define mediante "Case" con condiciones específicas, como valores negativos, cero o positivos, y se ejecutan instrucciones correspondientes. Es crucial ser exhaustivo y considerar todos los posibles casos.
Comparto un código para calcular cuál es el impuesto y salario neto mensual, de acuerdo a los tramos de la escala salarial en República Dominicana:
'IsPAr :) Public Function IsPar(num As Integer) As String Dim par As Integer par = num Mod 2 Select Case par Case Is = 0 IsPar = "Es par" Case Else IsPar = "No es par" End Select End Function