Select...Case, instruction (Visual Basic)Select...Case Statement (Visual Basic)

Exécute l’une des multiples groupes d’instructions, en fonction de la valeur d’une expression.Runs one of several groups of statements, depending on the value of an expression.

SyntaxeSyntax

Select [ Case ] testexpression  
    [ Case expressionlist  
        [ statements ] ]  
    [ Case Else  
        [ elsestatements ] ]  
End Select  

ComposantsParts

TermeTerm DéfinitionDefinition
testexpression Obligatoire.Required. Expression.Expression. Doit correspondre à un des types de données élémentaires (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, et UShort).Must evaluate to one of the elementary data types (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULong, and UShort).
expressionlist Requis dans un Case instruction.Required in a Case statement. Liste des clauses d’expression représentant les valeurs correspondantes pour testexpression.List of expression clauses representing match values for testexpression. Plusieurs clauses d’expression sont séparées par des virgules.Multiple expression clauses are separated by commas. Chaque clause peut prendre une des formes suivantes :Each clause can take one of the following forms:

- expression1 To expression2- expression1 To expression2
-[ Is ] comparisonoperator expression- [ Is ] comparisonoperator expression
- expression- expression

Utilisez le To les valeurs de mot clé pour spécifier les limites d’une plage de correspondance pour testexpression.Use the To keyword to specify the boundaries of a range of match values for testexpression. La valeur de expression1 doit être inférieur ou égal à la valeur de expression2.The value of expression1 must be less than or equal to the value of expression2.

Utilisez le Is mot clé avec un opérateur de comparaison (=, <>, <, <=, >, ou >=) pour spécifier une restriction sur les valeurs correspondantes pour testexpression.Use the Is keyword with a comparison operator (=, <>, <, <=, >, or >=) to specify a restriction on the match values for testexpression. Si le Is mot clé n’est pas fourni, il est automatiquement insérée avant comparisonoperator.If the Is keyword is not supplied, it is automatically inserted before comparisonoperator.

Le formulaire en spécifiant uniquement expression est traité comme un cas spécial de la Is écran where comparisonoperator est le signe égal (=).The form specifying only expression is treated as a special case of the Is form where comparisonoperator is the equal sign (=). Ce formulaire est évalué comme testexpression = expression.This form is evaluated as testexpression = expression.

Les expressions dans expressionlist peut être de n’importe quel type de données, à condition qu’ils soient implicitement convertibles au type de testexpression et approprié comparisonoperator n’est valide pour les deux types avec lesquels il est utilisé.The expressions in expressionlist can be of any data type, provided they are implicitly convertible to the type of testexpression and the appropriate comparisonoperator is valid for the two types it is being used with.
statements Facultatif.Optional. Une ou plusieurs instructions qui suivent Case s’exécutent si testexpression correspond à une clause dans expressionlist.One or more statements following Case that run if testexpression matches any clause in expressionlist.
elsestatements Facultatif.Optional. Une ou plusieurs instructions qui suivent Case Else s’exécutent si testexpression ne correspond pas à une clause dans la expressionlist de toutes les Case instructions.One or more statements following Case Else that run if testexpression does not match any clause in the expressionlist of any of the Case statements.
End Select Termine la définition de la Select... Case construction.Terminates the definition of the Select...Case construction.

NotesRemarks

Si testexpression correspond à un Case expressionlist clause, les instructions qui suivent Case instruction s’exécutent dans la prochaine Case, Case Else, ou End Select instruction.If testexpression matches any Case expressionlist clause, the statements following that Case statement run up to the next Case, Case Else, or End Select statement. Contrôle passe alors à l’instruction qui suit End Select.Control then passes to the statement following End Select. Si testexpression correspond à un expressionlist clause dans plusieurs Case clause, seules les instructions qui suivent la première correspondance exécutent.If testexpression matches an expressionlist clause in more than one Case clause, only the statements following the first match run.

Le Case Else instruction permet de présenter le elsestatements à exécuter si aucune correspondance n’est trouvée entre la testexpression et un expressionlist clause dans toute autre Case instructions.The Case Else statement is used to introduce the elsestatements to run if no match is found between the testexpression and an expressionlist clause in any of the other Case statements. Mais non obligatoire, il est judicieux d’avoir un Case Else instruction dans votre Select Case construction gérer imprévus testexpression valeurs.Although not required, it is a good idea to have a Case Else statement in your Select Case construction to handle unforeseen testexpression values. Si aucun Case expressionlist clause correspond à testexpression et il n’est pas Case Else instruction, le contrôle passe à l’instruction qui suit End Select.If no Case expressionlist clause matches testexpression and there is no Case Else statement, control passes to the statement following End Select.

Vous pouvez utiliser plusieurs expressions ou plages dans chaque Case clause.You can use multiple expressions or ranges in each Case clause. Par exemple, la ligne suivante est valide.For example, the following line is valid.

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

Note

Le Is mot-clé dans le Case et Case Else instructions n’est pas le même que le est un opérateur, qui est utilisé pour la comparaison de référence d’objet.The Is keyword used in the Case and Case Else statements is not the same as the Is Operator, which is used for object reference comparison.

Vous pouvez spécifier des plages et des expressions multiples pour des chaînes de caractères.You can specify ranges and multiple expressions for character strings. Dans l’exemple suivant, Case correspond à n’importe quelle chaîne qui est exactement égal à « pommes », a une valeur comprise entre « fruits à coques » et « a » dans l’ordre alphabétique ou contient la même valeur exacte que la valeur actuelle de testItem.In the following example, Case matches any string that is exactly equal to "apples", has a value between "nuts" and "soup" in alphabetical order, or contains the exact same value as the current value of testItem.

Case "apples", "nuts" To "soup", testItem

Le paramètre de Option Compare peut affecter les comparaisons de chaînes.The setting of Option Compare can affect string comparisons. Sous Option Compare Text, les chaînes « Apples » et « apples » considérées comme égales, mais sous Option Compare Binary, ils ne sont pas.Under Option Compare Text, the strings "Apples" and "apples" compare as equal, but under Option Compare Binary, they do not.

Note

A Case instruction avec plusieurs clauses peut exposer un comportement appelé de court-circuit.A Case statement with multiple clauses can exhibit behavior known as short-circuiting. Visual Basic évalue les clauses de gauche à droite et si un produit une correspondance avec testexpression, les autres clauses ne sont pas évaluées.Visual Basic evaluates the clauses from left to right, and if one produces a match with testexpression, the remaining clauses are not evaluated. Court-circuit peut améliorer les performances, mais elle peut produire des résultats inattendus si vous attendez chaque expression dans expressionlist à évaluer.Short-circuiting can improve performance, but it can produce unexpected results if you are expecting every expression in expressionlist to be evaluated. Pour plus d’informations sur le court-circuit, consultez Expressions booléennes.For more information on short-circuiting, see Boolean Expressions.

Si le code dans un Case ou Case Else bloc d’instructions ne doit-elle pas exécuter d’autres instructions dans le bloc, il peut quitter le bloc à l’aide de la Exit Select instruction.If the code within a Case or Case Else statement block does not need to run any more of the statements in the block, it can exit the block by using the Exit Select statement. Il transfère le contrôle immédiatement à l’instruction qui suit End Select.This transfers control immediately to the statement following End Select.

Select Case constructions peuvent être imbriquées.Select Case constructions can be nested. Chaque imbriqués Select Case construction doit avoir une correspondance End Select instruction et doit être entièrement contenue dans un seul Case ou Case Else bloc d’instructions d’externe Select Case construction dans laquelle elle est imbriquée.Each nested Select Case construction must have a matching End Select statement and must be completely contained within a single Case or Case Else statement block of the outer Select Case construction within which it is nested.

ExempleExample

L’exemple suivant utilise un Select Case construction pour écrire une ligne correspondant à la valeur de la variable number.The following example uses a Select Case construction to write a line corresponding to the value of the variable number. La seconde Case instruction contient la valeur qui correspond à la valeur actuelle de number, de sorte que l’instruction qui écrit « entre 6 et 8, inclusif » s’exécute.The second Case statement contains the value that matches the current value of number, so the statement that writes "Between 6 and 8, inclusive" runs.

Dim number As Integer = 8
Select Case number
    Case 1 To 5
        Debug.WriteLine("Between 1 and 5, inclusive")
        ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8
        Debug.WriteLine("Between 6 and 8, inclusive")
    Case 9 To 10
        Debug.WriteLine("Equal to 9 or 10")
    Case Else
        Debug.WriteLine("Not between 1 and 10, inclusive")
End Select

Voir aussiSee Also

Choose
End (instruction)End Statement
If...Then...Else (instruction)If...Then...Else Statement
Option Compare (instruction)Option Compare Statement
Exit (instruction)Exit Statement