Excel VBA tiene la construcción IF Then Else que puede usar para analizar múltiples condiciones y ejecutar códigos basados en estas condiciones.
Otro constructo similar que le permite verificar múltiples condiciones es el SELECCIONE EL CASO declaración.
Seleccionar caso es útil cuando tiene tres o más condiciones que desea verificar. También puede usar esto con dos condiciones (pero creo que If Then Else es más fácil de usar en esos casos).
Un ejemplo simple en el que la declaración Seleccionar caso es útil cuando desea obtener la calificación de un estudiante en función de las calificaciones que obtuvo (se trata como ejemplo más adelante en este tutorial).
Nota: Todos los códigos de ejemplo cubiertos en este tutorial están destinados a colocarse en un módulo en VBA.
Seleccione la sintaxis de mayúsculas y minúsculas
A continuación se muestra la sintaxis de Seleccionar caso en Excel VBA:
Seleccione Case Test_Expression Case Value_1 Code Block cuando Test_Expression = Value_1 Case Value_2 Code Block cuando Test_Expression = Value_2 Case Value_3 Code Block cuando Test_Expression = Value_3 Case Else Code Block cuando no se cumple ninguna de las condiciones del caso End Select
- Test_Expression: esta es la expresión cuyo valor analizamos usando diferentes casos (explicado mejor con los ejemplos a continuación).
- Condición_1, Condición_2,…: estas son las condiciones en las que se prueba la expresión de texto. Si cumple la condición, entonces se ejecuta el bloque de código para la condición dada.
Para cada instrucción Select Case que utilice, debe usar la instrucción End Select.
Nota: Tan pronto como se cumpla una condición, VBA sale de la construcción de casos seleccionados. Entonces, si tiene cinco condiciones y se cumple la segunda condición, VBA saldrá de Seleccionar caso, y el resto de las condiciones no se probarán.Seleccionar ejemplos de casos
Ahora, para comprender mejor cómo usar la instrucción Select Case en VBA, veamos algunos ejemplos.
Tenga en cuenta que la mayoría de los ejemplos de este tutorial están destinados a explicar el concepto. Éstos pueden ser o no la mejor manera de hacer el trabajo.
Comencemos con un ejemplo simple de cómo Seleccionar caso nos permite verificar las condiciones.
Ejemplo 1: comprobar los números
En el siguiente ejemplo, el código le pide al usuario que ingrese cualquier número entre 1 y 5, y luego muestra un cuadro de mensaje con el número que ingresó el usuario.
Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Ingrese un número entre 1 y 5") Seleccione Case UserInput Case 1 MsgBox "Ingresó 1" Case 2 MsgBox "Ingresó 2" Case 3 MsgBox "Ingresó 3" Case 4 MsgBox "Ingresó 4" Case 5 MsgBox "Ingresó 5" Fin Seleccione Fin Sub
Tenga en cuenta que este código está lejos de ser útil y ni siquiera es infalible. Por ejemplo, si ingresa 6 o cualquier cadena, no haría nada. Pero como mencioné, mi intención aquí es mostrar cómo funciona Select Case.
Ejemplo 2: uso de Seleccionar caso con condición IS
Puede utilizar una condición IS con la construcción Seleccionar caso para comprobar el valor de los números.
El siguiente código verifica si el número de entrada es mayor que 100 o no.
Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Por favor ingrese un número") Seleccione Case UserInput Case Is = 100 MsgBox "Ingresó un número mayor que (o igual a) 100" End Select End Sub
Ejemplo 3: uso de mayúsculas y minúsculas para capturar todo
En el ejemplo anterior, utilicé dos condiciones (menor que 100 o mayor o igual que 100).
En lugar del segundo caso con una condición, también puede usar Case Else.
Case Else actúa como una solución general y todo lo que no se incluye en ninguno de los casos anteriores es tratado por Case Else.
A continuación se muestra un código de ejemplo en el que he usado Case Else:
Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Por favor ingrese un número") Seleccione Case UserInput Case es <100 MsgBox "Ingresó un número menor que 100" Case Else MsgBox "Ingresó un número mayor que (o igual a ) 100 "Fin Seleccionar Fin Sub
Ejemplo 4: uso de un rango de números
En Seleccionar caso, también puede verificar un rango de números.
El siguiente código solicita una entrada y muestra un cuadro de mensaje basado en el valor.
Sub CheckNumber () Dim UserInput As Integer UserInput = InputBox ("Ingrese un número entre 1 y 100") Seleccione Case UserInput Case 1 to 25 MsgBox "Ingresó un número menor que 25" Case 26 to 50 MsgBox "Ingresó un número entre 26 y 50 "Caso 51 a 75 MsgBox" Ingresó un número entre 51 y 75 "Caso 75 a 100 MsgBox" Ingresó un número mayor de 75 "Fin Seleccione Fin Sub
Ejemplo 5: obtener la calificación basada en las calificaciones obtenidas
Hasta ahora hemos visto ejemplos básicos (que no son realmente útiles en el mundo práctico).
Aquí hay un ejemplo que está más cerca de un ejemplo del mundo real donde puede usar Seleccionar caso en Excel VBA.
El siguiente código le dará la calificación que obtiene un estudiante en función de las calificaciones de un examen.
Sub Grade () Dim StudentMarks As Integer Dim FinalGrade As String StudentMarks = InputBox ("Enter Marks") Seleccione el caso StudentMarks El caso es <33 FinalGrade = "F" Caso 33 a 50 FinalGrade = "E" Caso 51 a 60 FinalGrade = "D "Caso 60 a 70 FinalGrade =" C "Caso 70 a 90 FinalGrade =" B "Caso 90 a 100 FinalGrade =" A "Fin Seleccione MsgBox" El grado es "& FinalGrade Fin Sub
El código anterior solicita al usuario las calificaciones y en base a él, muestra un cuadro de mensaje con la calificación final.
En el código anterior, he especificado todas las condiciones, para las marcas 0 - 100.
Otra forma de usar Seleccionar caso es usar un caso más al final. Esto es útil cuando ha tenido en cuenta todas las condiciones y luego especifica qué hacer cuando no se cumple ninguna de las condiciones.
El siguiente código es una variación del código de grado con un cambio menor. Al final, tiene una instrucción Case else, que se ejecutará cuando ninguna de las condiciones anteriores sea verdadera.
Sub CheckOddEven () Dim StudentMarks como entero Dim FinalGrade como cadena StudentMarks = InputBox ("Enter Marks") Seleccionar caso StudentMarks El caso es <33 FinalGrade = "F" Caso 33 a 50 FinalGrade = "E" Caso 51 a 60 FinalGrade = "D "Caso 60 a 70 FinalGrade =" C "Caso 70 a 90 FinalGrade =" B "Caso más FinalGrade =" A "Fin Seleccione MsgBox" El grado es "& FinalGrade Fin Sub
Ejemplo 6: creación de una función personalizada (UDF) utilizando Seleccionar mayúsculas y minúsculas
En el ejemplo anterior, el código solicitó al usuario la entrada de las marcas.
También puede crear una función personalizada (función definida por el usuario) que se puede utilizar como cualquier función de hoja de trabajo normal, y que devolverá la calificación de los estudiantes.
A continuación se muestra el código que creará la fórmula personalizada:
Función GetGrade (StudentMarks como entero) Dim FinalGrade como cadena Seleccionar caso StudentMarks Caso es <33 FinalGrade = "F" Caso 33 a 50 FinalGrade = "E" Caso 51 a 60 FinalGrade = "D" Caso 60 a 70 FinalGrade = "C" Caso 70 a 90 FinalGrade = "B" Caso Else FinalGrade = "A" Fin Seleccione GetGrade = FinalGrade Función de fin
Una vez que tenga este código en el módulo, puede usar la función GetGrade en la hoja de trabajo como se muestra a continuación.
Ejemplo 7 - Verificar IMPAR / PAR con Seleccionar mayúsculas y minúsculas
A continuación se muestra un código de ejemplo en el que verifico si el número en la celda A1 es par o impar.
Sub CheckOddEven () CheckValue = Range ("A1"). Value Select Case (CheckValue Mod 2) = 0 Case True MsgBox "El número es par" Case False MsgBox "El número es impar" End Select End Sub
Ejemplo 8: comprobación de día laborable / fin de semana (condiciones múltiples)
También puede utilizar Seleccionar caso para comprobar varios valores en el mismo caso.
Por ejemplo, el siguiente código usa la fecha actual para mostrar si hoy es un día laborable o un fin de semana (donde los días del fin de semana son sábado y domingo)
Sub CheckWeekday () Seleccionar caso Día de la semana (ahora) Caso 1, 7 MsgBox "Hoy es un fin de semana" Caso Else MsgBox "Hoy es un día de la semana" Fin Seleccionar Fin Sub
En el código anterior, verificamos dos condiciones (1 y 7) en el mismo caso.
Nota: La función de día de la semana devuelve 1 para el domingo y 7 para el sábado.
Ejemplo 9 - Declaraciones de casos selectos anidados
También puede anidar una instrucción Seleccionar caso dentro de otra.
A continuación se muestra un código que verifica si un día es un día laborable o un fin de semana, y si es un fin de semana, mostrará si es sábado o domingo.
Sub CheckWeekday () Seleccionar caso Día de la semana (ahora) Caso 1, 7 Seleccionar caso Día de la semana (ahora) Caso 1 MsgBox "Hoy es domingo" Caso Else MsgBox "Hoy es sábado" Finalizar Seleccionar caso Else MsgBox "Hoy es un día de la semana" Finalizar Seleccionar Finalizar Sub
En el código anterior, he anidado el caso de selección para comprobar si el fin de semana es sábado o domingo.
Nota: El ejemplo que se muestra arriba es para explicar el concepto. Ésta no es la mejor ni la más práctica forma de averiguar los días laborables o los fines de semana.
Ejemplo 10: comprobación de la cadena de texto con mayúsculas y minúsculas
Puede verificar cadenas específicas usando Seleccionar caso y luego ejecutar código basado en él.
En el código de ejemplo a continuación, le pide al usuario que ingrese el nombre de su departamento y muestra el nombre de la persona con la que debe conectarse para la incorporación.
Sub OnboardConnect () Dim Department As String Department = InputBox ("Ingrese el nombre de su departamento") Seleccione el departamento de casos Case "Marketing" MsgBox "Conéctese con Bob Raines para la incorporación" Case "Finance" MsgBox "Por favor, conéctese con Patricia Cruz para la incorporación" Case "HR" MsgBox "Conéctese con Oliver Rand para la incorporación" Case "Admin" MsgBox "Conéctese con Helen Hume para la incorporación" Case Else MsgBox "Conéctese con Tony Randall para la incorporación" Fin Seleccione Finalizar Sub
Espero que todos los ejemplos anteriores hayan sido útiles para comprender el concepto y la aplicación de Select Case en Excel VBA.
También te pueden gustar los siguientes tutoriales de VBA:
- Bucles de Excel VBA: para el siguiente, hacer mientras, hacer hasta, para cada uno.
- Para el siguiente bucle en Excel VBA.
- Cómo grabar una macro en Excel.