¿Cómo usar la instrucción Select Case en Excel VBA?

VBA en Excel significa Visual Basic para Aplicaciones , que es el lenguaje de programación de Microsoft. Para optimizar el rendimiento y reducir el tiempo en Excel necesitamos Macros y VBA es la herramienta utilizada en el backend. 

Algunos enlaces útiles para obtener más información sobre Macros, VBA en Excel:

  1. Grabar Macros en Excel.
  2. ¿Cómo crear una macro en Excel?

En este artículo, vamos a discutir cómo usar Select Case Statement en Excel VBA.

Implementación:

En las pestañas de Microsoft Excel, seleccione la pestaña Desarrollador . Inicialmente, es posible que la pestaña Desarrollador no esté disponible. 

La pestaña Desarrollador se puede habilitar fácilmente mediante un proceso de dos pasos:

  • Haga clic derecho en cualquiera de las pestañas existentes en la parte superior de la ventana de Excel.
  • Ahora seleccione Personalizar la cinta en el menú desplegable.

  • En el cuadro de opciones de Excel, marque la casilla Desarrollador para habilitarlo y haga clic en Aceptar.

  • Ahora, la pestaña Desarrollador está visible.

  • Ahora haga clic en la opción Visual Basic en la pestaña Desarrollador y cree un nuevo módulo para escribir el programa usando la instrucción Seleccionar caso.
Developer  -> Visual Basic -> Tools -> Macros
  • Ahora crea una macro y dale un nombre adecuado.

  • Esto abrirá la ventana del Editor donde puede escribir el código.

Seleccione Declaración de caso: 

La declaración de caso selecto es similar a la declaración SWITCH-CASE en lenguajes de programación como C, C++, JAVA, etc. La estructura de Select Case en Excel es:

Select Case Expression/Condition
    Case Val_1
    Block of statements when Expression matches Val_1
    Case Val_2
    Block of statements when Expression matches Val_2
    Case Val_3
    Block of statements when Expression matches Val_3
    .
    .
    .
    Case Else
    Block of code when none of the above conditions match
End Select

Val_1, Val_2,... are the values.

Algunas palabras clave importantes utilizadas en Select Case en Excel son las siguientes:

  • El caso es : se usa básicamente con números.

Por ejemplo Case IS < 70 // Significa todos los números menores de 70.

  • Caso contrario : si ninguno de los valores de Casos coincide con la Expresión. Es similar al valor predeterminado en la instrucción SWITCH en C/C++.
  •  InputBox : para recibir información del usuario. 
  •  MsgBox : para mostrar la salida al usuario.

Ejemplo 1 :

Queremos mostrar las calificaciones de los estudiantes según las calificaciones obtenidas por ellos en un examen. Considere el conjunto de datos que se muestra a continuación:

Código:

Sub Select_Case_Grade()
'Declaring variables to fetch marks and store the grade
Dim marks As Integer, Grade As String
'Fetching marks from the Excel cell
marks = Range("A2").Value
Select Case marks
    Case Is >= 90
        Grade = "S"
    Case Is >= 80
        Grade = "A"
    Case Is >= 70
        Grade = "B"
    Case Is >= 60
        Grade = "C"
    Case Is >= 50
        Grade = "D"
    Case Is >= 40
        result = "E"
    Case Else
        Grade = "F"
End Select
'Displaying the grade in the Excel cell
Range("B2").Value = Grade
End Sub

Ahora, cambie las marcas, el grado que se muestra será «S».

También puede escribir el código anterior usando un rango de números en lugar de Case Is

Sub Select_Case_Grade()
'Declaring variables to fetch marks and store the grade
Dim marks As Integer, Grade As String
'Fetching marks from the Excel cell
marks = Range("A2").Value
Select Case marks
    Case 91 To 100
        Grade = "S"
    Case 81 To 90
        Grade = "A"
    Case 71 To 80
        Grade = "B"
    Case 61 To 70
        Grade = "C"
    Case 51 To 60
        Grade = "D"
    Case 40 To 50
        result = "E"
    Case Else
        Grade = "F"
End Select
'Displaying the grade in the Excel cell
Range("B2").Value = Grade
End Sub

Ejemplo 2: Considere que en una empresa, los empleados tienen que trabajar en un proyecto en base a turnos. La compañía quiere asignar turnos en base a reglas pares e impares y mantener la edad como criterio decisivo. Si la edad del empleado es impar entonces tiene que trabajar en el turno de noche y si es par entonces en el turno de mañana.

Seleccione Caso donde el usuario puede ingresar los datos en un cuadro.

Sub Select_Case_Allocate()
'Declaring variables to fetch marks and store the grade
Dim Age As Integer
'Asking the user to enter the age
Age = InputBox("Enter Your Age:")
Select Case (Age Mod 2) = 0
    Case True
    MsgBox "You will work in the morning shift"
    Case False
    MsgBox "You will work in the night shift"
End Select
End Sub

Ejemplo 3: Vamos a crear una pequeña calculadora que toma dos números como entrada y realiza sumas y multiplicaciones de estos números.

Código:

Sub Select_Case_Calculator()
'Declaring variables to fetch marks and store the grade
Dim num1 As Integer, mum2 As Integer, operator As String, res As Integer
'Asking the user to enter the numbers and operator to calculate
num1 = InputBox("Enter The First Number:")
num2 = InputBox("Enter The Second Number:")
operator = InputBox("Enter The Operator Name(Sum,Mul):")
Select Case operator
    Case "Sum"
    res = num1 + num2
    MsgBox ("The result is :" & res)
    Case "Mul"
    res = num1 * num2
    MsgBox ("The result is :" & res)
    Case Else
    MsgBox "Please Enter a Valid Operator"
End Select
End Sub

Podemos modificar el código anterior y usar múltiples condiciones en el caso. Por ejemplo, el usuario puede ingresar la string Sum como «SUMA» o «suma» ya que el cuadro de diálogo de Excel distingue entre mayúsculas y minúsculas.

Sub Select_Case_Calculator()
'Declaring variables to fetch marks and store the grade
Dim num1 As Integer, mum2 As Integer, operator As String, res As Integer
'Asking the user to enter the numbers
num1 = InputBox("Enter The First Number:")
num2 = InputBox("Enter The Second Number:")
operator = InputBox("Enter The Operator Name(Sum,Mul):")
Select Case operator
    Case "Sum", "SUM", "sum", "SUm", "SuM", "suM", "sUm"
    res = num1 + num2
    MsgBox ("The result is :" & res)
    Case "Mul", "mul", "MUL", "MuL", "muL", "mUl", "MUl"
    res = num1 * num2
    MsgBox ("The result is :" & res)
    Case Else
    MsgBox "Please Enter a Valid Operator"
End Select
End Sub

Ejemplo 4: Veamos un ejemplo usando un Select Case anidado.

Considere una empresa que tiene una política por departamento con respecto a la cantidad total de licencias que un empleado puede tomar en un solo año. Ahora, hay varios departamentos y hay empleados femeninos y masculinos y todos tienen políticas diferentes para solicitar la licencia. Por lo tanto, se usa un Select Case anidado para construir la declaración del problema donde los usuarios pueden ingresar los detalles del departamento y el género para verificar la cantidad máxima de días que pueden tomar vacaciones en un año.

Sub Select_Case_Empleave()
'Declaring variables to fetch Department and gender of employee
Dim Department As String, sex As String
'Asking the user to enter the details
Department = InputBox("Enter Your Department:")
sex = InputBox("Enter Your Gender (Male,Female):")
Select Case Department
    Case "HR"
    Select Case sex
        Case "Male"
        MsgBox ("You can take maximum 10 days leave in an year")
        Case "Female"
        MsgBox ("You can take maximum 20 days leave in an year")
        Case Else
        MsgBox ("Invalid Gender")
    End Select
    Case "IT"
    Select Case sex
        Case "Male"
        MsgBox ("You can take maximum 15 days leave in an year")
        Case "Female"
        MsgBox ("You can take maximum 25 days leave in an year")
        Case Else
        MsgBox ("Invalid Gender")
    End Select
Case Else

Publicación traducida automáticamente

Artículo escrito por rishabhchakrabortygfg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *