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

Exécute l’un des différents 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 Requis.Required. Formule.Expression. Doit correspondre à l’un des types de données élémentaires (Boolean, Byte, Char, Date, Double, Decimal, Integer, Long, Object, SByte, Short, Single, String, UInteger, ULonget 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 Obligatoire dans une instruction Case.Required in a Case statement. Liste des clauses d’expression représentant les valeurs de correspondance 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 l’une des formes suivantes :Each clause can take one of the following forms:

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

Utilisez le mot clé To pour spécifier les limites d’une plage de valeurs 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érieure ou égale à la valeur de expression2.The value of expression1 must be less than or equal to the value of expression2.

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

Le formulaire spécifiant uniquement expression est traité comme un cas spécial du formulaire Iscomparisonoperator 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 peuvent être de n’importe quel type de données, à condition qu’elles soient implicitement convertibles en type de testexpression et que le comparisonoperator approprié soit 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 Ce paramètre est facultatif.Optional. Une ou plusieurs instructions qui suivent Case qui 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 Ce paramètre est facultatif.Optional. Une ou plusieurs instructions qui suivent Case Else qui s’exécutent si testexpression ne correspond à aucune clause de la expressionlist de l’une des instructions Case.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 Met fin à la définition de la construction Select...Case.Terminates the definition of the Select...Case construction.

NotesRemarks

Si testexpression correspond à une clause Case expressionlist, les instructions qui suivent cette Case instruction s’exécutent jusqu’à l’instruction Case, Case Elseou End Select suivante.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. Le contrôle passe ensuite à l’instruction qui suit End Select.Control then passes to the statement following End Select. Si testexpression correspond à une clause expressionlist dans plusieurs clauses Case, seules les instructions qui suivent la première correspondance s’exécutent.If testexpression matches an expressionlist clause in more than one Case clause, only the statements following the first match run.

L’instruction Case Else est utilisée pour introduire le elsestatements à exécuter si aucune correspondance n’est trouvée entre le testexpression et une clause expressionlist dans une des autres instructions Case.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. Bien que cela ne soit pas obligatoire, il est judicieux de disposer d’une instruction Case Else dans votre construction Select Case pour gérer les valeurs de testexpression imprévues.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 aucune clause Case expressionlist ne correspond testexpression et qu’il n’y a pas d’instruction Case Else, 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 clause Case.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

Notes

Le mot clé Is utilisé dans les instructions Case et Case Else n’est pas le même que l' opérateur is, qui est utilisé pour la comparaison des références 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 plusieurs expressions pour les chaînes de caractères.You can specify ranges and multiple expressions for character strings. Dans l’exemple suivant, Case correspond à une chaîne qui est exactement égale à « apples », a une valeur comprise entre « NUTS » et « soupe » dans l’ordre alphabétique, ou contient la même valeur 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 » sont considérées comme égales, mais sous Option Compare Binary, ce n’est pas le cas.Under Option Compare Text, the strings "Apples" and "apples" compare as equal, but under Option Compare Binary, they do not.

Notes

Une instruction Case avec plusieurs clauses peut présenter un comportement connu sous le nom 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 une correspondance est trouvée avec testexpression, les clauses restantes 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. Le court-circuit peut améliorer les performances, mais il peut produire des résultats inattendus si chaque expression de expressionlist doit être évaluée.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 d’un bloc d’instructions Case ou Case Else n’a pas besoin d’exécuter d’autres instructions dans le bloc, il peut quitter le bloc à l’aide de l’instruction Exit Select.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. Cela transfère immédiatement le contrôle à l’instruction qui suit End Select.This transfers control immediately to the statement following End Select.

les constructions de Select Case peuvent être imbriquées.Select Case constructions can be nested. Chaque construction de Select Case imbriquée doit avoir une instruction End Select correspondante et doit être entièrement contenue dans un bloc d’instructions Case ou Case Else unique de la construction de Select Case externe 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 une construction de Select Case 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 deuxième instruction Case contient la valeur qui correspond à la valeur actuelle de number. par conséquent, l’instruction qui écrit « entre 6 et 8 inclus » 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