Select ステートメントの機能は If ステートメントと似ています。しかし、Select ステートメントを使用すると、より明確で繰り返しの少ない式を作成できる場合があります。たとえば、{Customer.Fax 番号}フィールドを評価して、地域コードがワシントン州(206、360、509)のものか、それともカナダのブリティッシュ コロンビア州(604、250)のものかを判定するとします。
Rem Select の例 1 Select Case Left ({Customer.Fax 番号}, 3) Case "604", "250" formula = "BC" Case "206", "509", "360" formula = "WA" End Select
Select Case キーワードの直後にある式を Select 条件と言います。上の例では、Left({Customer.Fax 番号},3)です。Select ステートメントは、Select 条件と一致する最初の Case を見つけ、それに続くステートメントを次の Case まで実行します。
Rem Select の例 1 と同じ結果の式 Dim areaCode As String areaCode = Left ({Customer.Fax 番号}, 3) If areaCode In Array ("604", "250") Then formula = "BC" ElseIf areaCode In Array ("206", "509", "360") Then formula = "WA" End If
例
次の式は、映画が受けたオスカーのノミネート数を“低い”、“中間”、“高い”、および“最高”というカテゴリにグループ化し、式の結果として考えられる値を Case ラベルの後にリストしています。Case Else 句に注目してください。この句の使用は任意です。Case リストのどれも、前の Case 句の値と一致しない場合は、Case Else が適用されます。たとえば、次の例の{movie.NOM}が 11 の場合、この式は“最高”を返します。
Rem Select の例 2 Select Case {movie.NOM} Case 1,2,3, Is < 1 Rem ステートメント ブロックの中に複数の Rem ステートメントを入れることができます formula = "低い" Case 4 To 6, 7, 8, 9 formula = "中間" Case 10 formula = "高い" Case Else formula = "最高" End Select