Instrucción Select CaseSelect Case statement

Ejecuta uno de los diferentes grupos de instrucciones, según el valor de una expresión.Executes one of several groups of statements, depending on the value of an expression.

SintaxisSyntax

Select Case testexpressionSelect Case testexpression
[ Case expressionlist-n [ statements-n ]][ Case expressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]][ Case Else [ elsestatements ]]
End SelectEnd Select


La sintaxis de la instrucción Select Case consta de estas partes:The Select Case statement syntax has these parts:

PartPart DescripciónDescription
testexpressiontestexpression Obligatorio.Required. Cualquier expresión numérica o expresión de cadena.Any numeric expression or string expression.
expressionlist-nexpressionlist-n Necesario si aparece un Case.Required if a Case appears.

Lista delimitada de uno o varios de los siguientes formularios: expression, expressionToexpression, Iscomparisonoperator expression.Delimited list of one or more of the following forms: expression, expressionToexpression, Iscomparisonoperator expression.

La palabra clave To especifica un rango de valores.The To keyword specifies a range of values. Si usa la palabra clave To, el valor inferior debe aparecer antes de To.If you use the To keyword, the smaller value must appear before To.

Use la palabra clave Is con operadores de comparación (excepto Is y Like) para especificar un intervalo de valores.Use the Is keyword with comparison operators (except Is and Like) to specify a range of values. Si no se proporciona, la palabra clave Is se insertará automáticamente.If not supplied, the Is keyword is automatically inserted.
statements-nstatements-n Opcional.Optional. Una o más instrucciones que se ejecuta si testexpression coincide con cualquier parte de expressionlist-n.One or more statements executed if testexpression matches any part of expressionlist-n.
elsestatementselsestatements Opcional.Optional. Una o más instrucciones que se ejecuta si testexpression no coincide con ninguna de las de la cláusula Case.One or more statements executed if testexpression doesn't match any of the Case clause.

ObservacionesRemarks

Si testexpression coincide con cualquier expresión expressionlist de Case, las instrucciones que siguen esa cláusula Case se ejecutan hasta la siguiente cláusula Case, o bien, para la última cláusula, hasta End Select.If testexpression matches any Case expressionlist expression, the statements following that Case clause are executed up to the next Case clause, or, for the last clause, up to End Select. Luego, el control pasa a la instrucción que sigue a End Select.Control then passes to the statement following End Select. Si testexpression coincide con una expresión expressionlist en más de una cláusula Case, se ejecutan solo las instrucciones que siguen a la primera coincidencia.If testexpression matches an expressionlist expression in more than one Case clause, only the statements following the first match are executed.

La cláusula Case Else se usa para indicar elsestatements que se ejecutarán si no se encuentra ninguna coincidencia entre el testexpression y una _expressionlist _ en cualquiera de las demás selecciones Case.The Case Else clause is used to indicate the elsestatements to be executed if no match is found between the testexpression and an expressionlist in any of the other Case selections. Aunque no es necesario, es buena idea tener una instrucción Case Else en el bloque Select Case para controlar valores testexpression imprevistos.Although not required, it is a good idea to have a Case Else statement in your Select Case block to handle unforeseen testexpression values. Si ninguna expressionlist de Case coincide con testexpression y no hay ninguna instrucción Case Else, la ejecución continúa a partir de la instrucción que sigue a End Select.If no Case expressionlist matches testexpression and there is no Case Else statement, execution continues at the statement following End Select.

Puede usar varias expresiones o intervalos en cada cláusula Case.You can use multiple expressions or ranges in each Case clause. Por ejemplo, la línea siguiente es válida:For example, the following line is valid:

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber 

Nota

El operador de comparación Is no es lo mismo que la palabra clave Is que se usa en la instrucción Select Case.The Is comparison operator is not the same as the Is keyword used in the Select Case statement.

También se pueden especificar intervalos y varias expresiones para cadenas de caracteres.You also can specify ranges and multiple expressions for character strings. En el ejemplo siguiente, Case coincide con cadenas que son exactamente iguales a everything, cadenas comprendidas entre nuts y soup en orden alfabético y el valor actual de TestItem:In the following example, Case matches strings that are exactly equal to everything, strings that fall between nuts and soup in alphabetic order, and the current value of TestItem:

Case "everything", "nuts" To "soup", TestItem 

Las instrucciones Select Case se pueden anidar.Select Case statements can be nested. Cada instrucción anidada Select Case debe tener una instrucción End Select correspondiente.Each nested Select Case statement must have a matching End Select statement.

EjemploExample

En este ejemplo se usa la instrucción Select Case para evaluar el valor de una variable.This example uses the Select Case statement to evaluate the value of a variable. La segunda cláusula Case contiene el valor de la variable que se evalúa y, por tanto, se ejecuta solo la instrucción asociada.The second Case clause contains the value of the variable being evaluated, and therefore only the statement associated with it is executed.

Dim Number 
Number = 8    ' Initialize variable. 
Select Case Number    ' Evaluate Number. 
Case 1 To 5    ' Number between 1 and 5, inclusive. 
    Debug.Print "Between 1 and 5" 
' The following is the only Case clause that evaluates to True. 
Case 6, 7, 8    ' Number between 6 and 8. 
    Debug.Print "Between 6 and 8" 
Case 9 To 10    ' Number is 9 or 10. 
Debug.Print "Greater than 8" 
Case Else    ' Other values. 
    Debug.Print "Not between 1 and 10" 
End Select

Vea tambiénSee also

Soporte técnico y comentariosSupport and feedback

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación?Have questions or feedback about Office VBA or this documentation? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.