eval (ez_write_tag ([[468,60], «sourcedaddy_com-box-3», «ezslot_1», 102, «0», «0»])); Usando la declaración de caso de selección
MS-Excel / Formato general
La realización de múltiples pruebas con If … ElseIf es una técnica útil: es una herramienta de VBA a la que puede acceder con bastante frecuencia. Sin embargo, rápidamente se vuelve difícil de manejar a medida que aumenta el número de pruebas que debe realizar. Está bien para dos o tres pruebas, pero más que eso hace que la lógica sea más difícil de seguir.
Para estas situaciones, la declaración Select Case de VBA es una mejor opción. La idea es que proporcione una expresión lógica al principio y luego enumere una serie de resultados posibles. Para cada resultado posible, llamado caso, debe proporcionar una o más declaraciones de VBA para ejecutar si el caso resulta ser cierto. Aquí está la sintaxis:
Select Case TestExpression Case FirstCaseList Case SecondCaseList <etc> Case Else End Select
TestExpression
Esta expresión se evalúa al principio de la estructura. debe devolver un valor (lógico, numérico, cadena, etc.).
CaseList
Una lista de uno o más resultados posibles para TestExpression. Estos resultados son valores o expresiones separados por comas. VBA examina cada elemento en el list para ver si una coincide con TestExpression. Las expresiones pueden tomar cualquiera de las siguientes formas:ExpressionExpression To ExpressionIs LogicalOperator ExpressionLa palabra clave To define un rango de valores (por ejemplo, 1 a 10) . La palabra clave Is define un rango abierto de valores (por ejemplo, Is > = 100).
Declaraciones
Estas son las declaraciones que VBA ejecuta si alguna parte de la CaseList asociada coincide con TestExpression. VBA ejecuta las ElseStatements opcionales si ninguna CaseList contiene una coincidencia para TestExpression.
Nota: Si más de una CaseList contiene un elemento que coincide TestExpression, VBA solo ejecuta las declaraciones asociadas con CaseList que aparece primero en la estructura Select Case.
El listado muestra cómo usaría Select Case para manejar el problema del argumento de frecuencia.
Un procedimiento que usa Seleccione un caso para probar varios valores Un ejemplo de caso selecto: conversión de puntajes de prueba en calificaciones con letras
Para ayudarlo a tener una mejor idea de la declaración Seleccionar caso, echemos un vistazo a otro ejemplo que muestra mejor los talentos únicos de este poderoso estructura. Suponga que desea escribir un procedimiento que convierta una puntuación de prueba sin procesar en una calificación con letras de acuerdo con la siguiente tabla:
Puntuación bruta | Calificación en letras |
90 y más | A |
Entre 80 y 89 | B |
Entre 70 y 79 | C |
Entre 60 y 69 | D |
Menos de 60 | F |
El listado muestra el procedimiento LetterGrade, que usa una instrucción Select Case para realizar la conversión.
El argumento rawScore es un valor entero entre 0 y 100. La estructura Select Case primero comprueba si rawScore es negativo y, si es así, la función devuelve un mensaje de error. La siguiente instrucción Case verifica si el puntaje es menor que 60, y la función devuelve la calificación en letra «F» si lo es. El siguiente enunciado de caso busca una puntuación inferior a 70. Si llegamos tan lejos, ya sabemos (gracias al enunciado de caso anterior) que el resultado es al menos 60. Por lo tanto, este caso realmente está comprobando si el resultado es entre 60 y 70 (incluidos 60, pero no incluidos 70). Si es así, se devuelve la calificación en letra «D». El resto de las declaraciones del caso proceden de la misma manera. El caso Else busca una puntuación superior a 100 y devuelve otro mensaje de error si lo es.
Otro ejemplo: domesticar la función RGB
Puede utilizar la función VBA RGB (rojo, verde, azul) en cualquier momento que necesite especificar un color para una propiedad. Cada uno de los tres argumentos nombrados (rojo, verde y azul) son números enteros entre 0 y 255 que determinan la cantidad de cada color componente que se mezcla en el color final. En el componente rojo, por ejemplo, 0 significa que no hay rojo y 255 significa que hay rojo puro. Si los tres valores son iguales, obtendrá un tono de gris.
A continuación se muestran algunos valores de muestra para cada componente que produce colores comunes:
Rojo | Azul | Verde | Resultado |
0 | 0 | 0 | Negro |
0 | 0 | 255 | Azul |
0 | 255 | 0 | Verde |
0 | 255 | 255 | Cian |
255 | 0 | 0 | Rojo |
255 | 0 | 255 | Margenta |
255 | 255 | 0 | Amarillo |
255 | 255 | 255 | Blanco |
Sin embargo, en lugar de memorizar estas combinaciones, pongamos en funcionamiento VBA y Select Case para facilitar la elección de colores. muestra la función VBAColor, que le permite usar nombres (por ejemplo, «rojo» o «azul») en lugar de adormecimiento críptico er combinaciones para establecer 16 de los colores más comunes.
Una función que acepta un nombre de color como una cadena y devuelve el valor RGB correspondiente
VBAColor toma un solo argumento, colorName, que es el nombre del color que quiero trabajar con. Observe cómo la instrucción Select Case masajea el argumento para evitar errores:
Select Case LCase(Trim(colorName))
La función Trim elimina los espacios extraños al principio y final del argumento, y la función LCase convierte colorName a minúsculas. Esto asegura que la función no distingue entre mayúsculas y minúsculas, lo que significa que no importa si envía negro, NEGRO o Negro: la función seguirá funcionando.
El resto de la función usa sentencias Case para verificar el varios nombres de color y devuelve el valor RGB apropiado. Puede usar el procedimiento ColorTester para darle un giro a VBAColora. Este procedimiento solo formatea el color de fuente de la celda de la hoja de trabajo actualmente seleccionada.
Nota: VBA también define ocho constantes de color que puede usar cuando solo necesite los colores básicos: vbBlack, vbBlue, vbCyan, vbGreen, vbMagenta, vbRed, vbWhite y vbYellow.