Select Case 文(1)の続きです。
セルA1の値が「0~40」ならセルB1の値が”不可”、「41~60」なら”可”、「61~90」なら”良”、「91~100」なら”優”、それ以外の値なら”得点を入力して下さい”とするには、こうします。
Private Sub CommandButton1_Click()
Select Case Range("A1").Value
Case Is > 90
Range("B1").Value = "優"
Case Is > 60
Range("B1").Value = "良"
Case Is > 40
Range("B1").Value = "可"
Case Is >= 0
Range("B1").Value = "不可"
Case Else
Range("B1").Value = "得点を0~100の間の数値で入力して下さい"
End Select
End Sub
一行ずつ解説します。
Private Sub CommandButton1_Click()
CommandButton1という名前のボタンをクリックしたときに実行される処理、という意味です。
Select Case Range("A1").Value
条件分岐の対象をセルA1 とする、という意味です。
Case Is > 90
90より大きければ、という意味です。90は含みません。90以上としたい場合は、”>=90”とします。この条件が合致したら次の行の機能が実行されます。
なお、If ElseIF文もそうですが、Select
Case文は上から順に条件が成立するかをみていきます。合致したら次の行の機能を実行して、その後の条件は見に行きません。
Range("B1").Value = "優"
セルB1の値を”優”にします。
Case Is > 60
60より大きければ、という意味です。60は含みません。60以上としたい場合は、”>=60”とします。
91以上もこの条件に合致しますが、すでに「>90」という条件があり、それを通過して(条件が非成立)この条件が判断されているのですから、当然、90以下の数値であるわけです。
この条件が合致したら次の行の機能が実行されます。
Range("B1").Value = "良"
セルB1の値を”良”にします。
Case Is > 40
40より大きければ、という意味です。40は含みません。40以上としたい場合は、”>=40”とします。
91以上の数値や61以上の数値もこの条件に合致しますが、すでに「>90」および「>60」という条件があり、それを通過して(条件が非成立)この条件が判断されているのですから、当然、90以下、かつ、60以下の数値であるわけです。
Range("B1").Value = "可"
セルの値を”可”にします。
Case Is >= 0
0と同じかそれ以上、という意味です。
”90より大きい”、”60より大きい”、”40より大きい”という条件が非成立だったのですから、当然、40以下の数値です。「>0」とすると、0は含まないので、0点の人を評価できません。よって、0を含むために「>=0」(0以上)とします。
Range("B1").Value = "不可"
セルの値を”不可”にします。
Case Else
デフォルトの処理を設定します。0~100の数値以外の値が入力されたときのためのものです。
エクセルの機能のひとつである入力規則では、あらかじめ指定した値以外を入力するとエラーメッセージを表示できます。それと似たものと考えれば良いです。
Range("B1").Value = "得点を0~100の間の数値で入力して下さい"
セルB1に”得点を0~100の間の数値で入力して下さい”と表示します。
End Select
Select Case 文の終端、という意味です。
End Sub
CommandButton1という名前のボタンをクリックしたときに実行される処理の終わり、という意味です。
条件判断を決め打ちできるときは
Case 条件
で良かったです。
が、範囲で比較するときは
Case Is 条件
とします。
厳密にいうと、「比較演算子を使うときは」、”Case Is”とします。
比較演算子とは”>”とか"<="とかです。
| 意味 | 比較演算子 |
|---|---|
| 10と同じ | =10 |
| 10より大きい | > 10 |
| 10以上 | >= 10 |
| 10より小さい | < 10 |
| 10以下 | <= 10 |
| 10じゃない | <> 10 |
決め打ちしているときも、実は
Case Is = 条件
としています。イコールのときは省略できるというだけです。
なお、範囲で指定するときにはもっと可読性(コードの読みやすさ)の高い書式があります。それは、
Select Case Range("A1").Value
Case 91 To 100
Range("B1").Value = "優"
Case 61 To 90
Range("B1").Value = "良"
Case 41 To 60
Range("B1").Value = "可"
Case 0 To 40
Range("B1").Value = "不可"
Case Else
Range("B1").Value = "得点を0~100の間の数値で入力して下さい"
End Select
こうします。
条件判断として、
Case 91 To 100
のようにありますが、この書式は
Case 下限値 To 上限値
です。
Case "A" To "Z"
とすると、大文字アルファベットのいずれかが入力されたら、という条件とすることもできます。