Declaración de cambio de Excel VBA
El cambio en VBA es similar a la función de casos seleccionados. La única diferencia entre esos es que tenemos que escribir códigos mucho menores en un interruptor en comparación con el caso seleccionado. Podemos escribir una declaración de cambio dentro de un subprocedimiento o podemos escribirla como una función definida por el usuario en VBA.
El interruptor en VBA evalúa una expresión y proporciona el resultado en función de las condiciones para esa expresión. En las declaraciones de casos seleccionados, definimos casos en los que si tenemos un caso, el resultado debería ser b, etc. Esto requería escribir muchos códigos para la declaración de casos seleccionados, pero en Switch, podemos fusionar todas las condiciones y expresiones en una declaración en lugar de tener múltiples declaraciones de casos.
Sintaxis de la declaración de cambio
Switch calcula la primera expresión y si el valor es verdadero, devuelve el valor de la expresión y si el valor de la expresión 1 no es verdadero, continúa para el mismo cálculo para la expresión 2 y si el resultado es verdadero, se muestra el valor 2 pero si la expresión devuelta es falsa, el conmutador pasa a otra expresión.
Entonces, ¿qué sucede si ninguna de las expresiones es verdadera y todas se devuelven como False? En ese caso, obtenemos un error de tiempo de ejecución a menos que tengamos un manejo de error preventivo para tal escenario.
¿Cómo utilizar la instrucción Switch en Excel VBA?
A continuación se muestran los diferentes ejemplos para usar la declaración de cambio de VBA en Excel.
Puede descargar esta plantilla de Excel de VBA Switch aquí - Plantilla de Excel de VBA SwitchVBA Switch - Ejemplo # 1
Comencemos con el ejemplo básico para tener una idea de la declaración de cambio de VBA. Tomaremos información del usuario y, en función de esa información, definiremos la salida. Tomaremos la entrada del número 1 al 5 y, según la entrada, tendremos resultados predefinidos, pero si el usuario ingresa cualquier número que no sea nuestro rango, tendremos que manejar ese error.
Siga los pasos a continuación para usar Switch Statement en Excel VBA:
Paso 1: desde la pestaña visual básica, ingrese el editor VB desde la pestaña del desarrollador.
Paso 2: en la ventana VB Editor, inserte un nuevo módulo desde la pestaña Insertar.
Paso 3: declare un nuevo subprocedimiento en el nuevo módulo que acaba de crear.
Código:
Sub muestra () End Sub
Paso 4: Declare dos variables A y B, una como número entero y otra como una cadena.
Código:
Submuestra () Dim A como entero Dim B como String End Sub
Paso 5: en la variable A, almacene el valor dado por el usuario utilizando la función de cuadro de entrada.
Código:
Submuestra () Dim A como entero Dim B como cadena A = InputBox ("Ingrese un valor", "el valor debe estar entre 1 y 5") End Sub
Paso 6: Ahora en la Variable B usaremos una declaración de cambio de VBA para haber evaluado el resultado según la entrada proporcionada por el usuario.
Código:
Submuestra () Dim A como entero Dim B como cadena A = InputBox ("Ingrese un valor", "el valor debe estar entre 1 y 5") B = Interruptor (A = 1, "Uno", A = 2, "Dos ", A = 3, " Tres ", A = 4, " Cuatro ", A = 5, " Cinco ") Sub final
Paso 5: Visualice el valor almacenado en B usando la función MSGBOX.
Código:
Submuestra () Dim A como entero Dim B como cadena A = InputBox ("Ingrese un valor", "el valor debe estar entre 1 y 5") B = Interruptor (A = 1, "Uno", A = 2, "Dos ", A = 3, " Tres ", A = 4, " Cuatro ", A = 5, " Cinco ") MsgBox B End Sub
Paso 6: Ejecute el código anterior presionando la tecla F5 y nos pide que ingresemos un número entero. Proporcione un número 3 y presione OK para ver el resultado.
Paso 7: Ahora volvamos a ejecutar el código e ingrese el número 6 y vea el resultado que obtenemos.
Obtenemos el error de tiempo de ejecución ya que en nuestra declaración de cambio no hay una expresión para definir 6. Entonces, en tales escenarios, necesitamos tener un manejo preventivo de errores.
Paso 8: para superar este error de tiempo de ejecución, declare otra variable Var como Variante.
Código:
Submuestra () Dim A como entero Dim B como String Dim var Como variante A = InputBox ("Ingrese un valor", "el valor debe estar entre 1 y 5") B = Interruptor (A = 1, "Uno", A = 2, "Dos", A = 3, "Tres", A = 4, "Cuatro", A = 5, "Cinco") MsgBox B End Sub
Paso 9: Antes de nuestra declaración de cambio, use la declaración de error en goto para que si el código encuentra un error sepa a dónde ir.
Código:
Submuestra () Dim A como entero Dim B como String Dim var Como variante A = InputBox ("Ingrese un valor", "el valor debe estar entre 1 y 5") En caso de error GoTo var B = Interruptor (A = 1, "Uno ", A = 2, " Dos ", A = 3, " Tres ", A = 4, " Cuatro ", A = 5, " Cinco ") MsgBox B End Sub
Paso 10: ahora defina qué sucederá si el código encuentra un error,
Código:
Submuestra () Dim A como entero Dim B como String Dim var Como variante A = InputBox ("Ingrese un valor", "el valor debe estar entre 1 y 5") En caso de error GoTo var B = Interruptor (A = 1, "Uno ", A = 2, " Dos ", A = 3, " Tres ", A = 4, " Cuatro ", A = 5, " Cinco ") MsgBox B var: MsgBox" Ha ingresado un número no válido "Continuar Siguiente Fin Sub
Paso 11: Ahora ejecutemos el código nuevamente presionando F5 o haciendo clic en el botón Reproducir e ingrese el valor 6 y luego presione OK para ver el resultado final en caso de que la declaración de cambio encuentre un error.
Interruptor VBA - Ejemplo # 2
Para este ejemplo, tengo datos en la hoja 1 que contiene el nombre de algunas películas y su duración en minutos. En función de su duración, quiero definir si la película es corta o muy larga. Echa un vistazo a los datos a continuación.
Siga los pasos a continuación para usar Switch Statement en Excel VBA:
Paso 1: Comencemos en el mismo módulo y comencemos definiendo otro subprocedimiento de la siguiente manera.
Sub Sample1 () End Sub
Paso 2: declare dos variables A y B, una como Integer y otra como String de la siguiente manera,
Sub Sample1 () Dim A como entero Dim B como String End Sub
Paso 3: ahora en la variable A, almacenemos el valor de la duración de la película para cualquiera de las películas.
Submuestra1 () Dim A como entero Dim B como cadena A = Rango ("A3"). Offset (0, 1) .Value End Sub
Paso 4: Ahora en la Variable B, usemos una declaración de cambio de VBA para definir cuál sería el escenario para cada duración de película.
Submuestra1 () Dim A como entero Dim B como cadena A = Rango ("A3"). Compensación (0, 1). Valor B = Interruptor (A <= 70, "Demasiado corto", A <= 100, "Corto ", A <= 120, " Long ", A <= 150, " Too Long ") End Sub
Paso 5: Ahora, ¿qué pasa si el valor es mayor que 180 si tenemos otro controlador de errores aquí o simplemente podemos escribir otra expresión como Verdadero, Valor? Como todos los demás valores serán devueltos ya que el código falso ejecutará esta expresión.
Submuestra1 () Dim A como entero Dim B como cadena A = Rango ("A3"). Compensación (0, 1). Valor B = Interruptor (A <= 70, "Demasiado corto", A <= 100, "Corto ", A <= 120, " Largo ", A <= 150, " Demasiado largo ", Verdadero, " Aburrido ") Fin Sub
Paso 6: Muestra el valor de B usando la función msgbox.
Submuestra1 () Dim A como entero Dim B como cadena A = Rango ("A3"). Compensación (0, 1). Valor B = Interruptor (A <= 70, "Demasiado corto", A <= 100, "Corto ", A <= 120, " Largo ", A <= 150, " Demasiado largo ", Verdadero, " Aburrido ") MsgBox B End Sub
Paso 7: Ejecute el código presionando la tecla F5 o haciendo clic en el botón Reproducir y vea la salida.
La celda A3 tiene una película 2 cuya longitud fue de 100, por lo que la salida es corta.
Conmutador VBA - Ejemplo # 3
Usemos la instrucción switch para hacer una función definida por el usuario para el ejemplo anterior para que podamos usarla en nuestra hoja de trabajo cuando sea necesario.
Siga los pasos a continuación para usar Switch Statement en Excel VBA:
Paso 1: En el mismo módulo declara una función llamada como longitud de película.
Función FilmLength (Leng como entero) como función de fin de cadena
Paso 2: ahora use una instrucción VBA Switch para definir los parámetros basados en la longitud de la siguiente manera,
Función FilmLength (Leng As Integer) Como String FilmLength = Switch (Leng <= 70, "Too Short", Leng <= 100, "Short", Leng <= 120, "Long", Leng <= 150, "Too Long", Verdadero, "Aburrido") Función final
Paso 3: Ahora veamos la hoja de trabajo donde teníamos nuestros datos, escriba = FilmLength (
Paso 4: Podemos ver que nuestra función allí da un argumento como valores en la celda B2.
Paso 5: Después de aplicar la fórmula, presione Intro.
Paso 6: Ahora arrastre la función a la celda C10 y vea el resultado.
Cosas para recordar
- La función de interruptor evalúa la expresión en ella. Si la primera expresión se evalúa como verdadera, entonces no evalúa las otras expresiones.
- Si ninguna de las expresiones es verdadera, devuelve un error de tiempo de ejecución.
- Necesitamos tener un controlador de errores en la declaración o expresión del interruptor para que si cada expresión se devuelve falsa no encontremos un error de tiempo de ejecución.
- Un cambio es similar a la declaración de casos seleccionados.
Artículos recomendados
Esta es una guía para VBA Switch. Aquí se discute cómo usar la declaración de cambio en Excel VBA junto con algunos ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:
- Uso de la función VBA InStr
- Función de interruptor de Excel
- Número aleatorio de VBA
- Función CONCATENAR en Excel