4、VBAによるマクロの作成(基礎編)
4−6、高度な分岐
複数の分岐
前ページで行った分岐は、「条件にあう場合は処理1、あわない場合は処理2」という形で、条件にあうかあわないかで2通りに処理が分岐されるものでした。
分岐命令はこの2通りの分岐だけでなく、条件をさらに設定して何通りにも分岐させることもできます。
例えば、「条件1にあう場合は処理1、条件2にあう場合は処理2、条件3にあう場合は処理3、すべてにあわない場合は処理4」といった具合です。この例は、条件は3つ、分岐する処理は4つになっていますが、いくつに設定することもできます。例6)
※「Example1」〜「Example5」の続きです。
「山田」君の点数を評価します。
点数が0〜50点の場合は赤、51〜80点の場合は黄色、
81〜100点の場合は青でセルの中を塗りつぶします。Sub Example6()
Worksheets("Sheet1").Select
Hyouka1 = Range("B2").Value
If Hyouka1 <= 50 Then
Range("B2").Interior.ColorIndex = 3
ElseIf Hyouka1 <= 80 Then
Range("B2").Interior.ColorIndex = 6
Else
Range("B2").Interior.ColorIndex = 5
End If
Hyouka2 = Range("C2").Value
If Hyouka2 <= 50 Then
Range("C2").Interior.ColorIndex = 3
ElseIf Hyouka2 <= 80 Then
Range("C2").Interior.ColorIndex = 6
Else
Range("C2").Interior.ColorIndex = 5
End If
Hyouka3 = Range("D2").Value
If Hyouka3 <= 50 Then
Range("D2").Interior.ColorIndex = 3
ElseIf Hyouka3 <= 80 Then
Range("D2").Interior.ColorIndex = 6
Else
Range("D2").Interior.ColorIndex = 5
End If
End Sub記述後、「マクロの実行」から「Example6」を実行してください。
【このコードの解説】
- まず、セルB2の値(国語の点数)を取得し、変数「Hyouka1」に格納します。
Hyouka1 = Range("B2").Value
- 次にその点数によって処理を分岐します。
※説明のためにそれぞれの行に記号をつけています。(ア)If Hyouka1 <= 50 Then
(イ) Range("B2").Interior.ColorIndex = 3
(ウ)ElseIf Hyouka1 <= 80 Then
(エ) Range("B2").Interior.ColorIndex = 6
(オ)Else
(カ) Range("B2").Interior.ColorIndex = 5
(キ)End If日本語でいうと・・・
(ア)もし Hyouka1が50以下 ならば
(イ) セルB2の中を赤で染めなさい
(ウ)そうでなくもし Hyouka1が80以下 ならば
(エ) セルB2の中を黄色で染めなさい
(オ)そうでなければ
(カ) セルB2の中を青で染めなさい
(キ)分岐命令終了
※「Interior」とはセルの中のこと。
赤、黄、青は各々カラー番号3、6、5で表わされる。
- 点数が50点以下の場合、どのような流れになるかというと、(ア)の行で「もし50以下なら」という条件に当てはまるので、(イ)の行の処理が実行され、(キ)の行に飛んで終了します。
つまり流れは、(ア)→(イ)→(キ)- 点数が51〜80点の場合は、(ア)の行の条件には当てはまらないので、(イ)には行かず、(ウ)に飛びます。(ウ)には(ア)でない場合の新たな条件「もし80以下なら」があり、今度はこれにあてはまるので、(エ)の処理が実行され、(キ)の行に飛んで終了します。
つまり流れは、(ア)→(ウ)→(エ)→(キ)- 点数が81以上の場合は、(ア)の条件に当てはまらず、(ウ)に飛び、(ウ)の条件にも当てはまらないので(オ)に行きます。(オ)はすべての条件にも当てはまらない場合なので、そのまま(カ)の処理が実行され、(キ)の行に行き、終了します。
つまり流れは、
(ア)→(ウ)→(オ)→(カ)→(キ)いずれの場合も、どの条件にあてはまるかによって、どれか一つの処理が行われるわけです。
- セルC2の値(数学の点数)、セルD2の値(英語の点数)についても同様の処理を行います。