IF Elseif 文であれば、条件をいくつも書き連ねて、処理を分岐できます。
セルA1の値が”アメリカ”なら”ワシントン”、”日本”なら”東京”、”韓国”なら”ソウル”とするには、こうします。
Private Sub CommandButton1_Click()
If Range("A1").Value = "アメリカ" Then
Range("B1").Value = "ワシントン"
ElseIf Range("A1").Value = "日本" Then
Range("B1").Value = "東京"
ElseIf Range("A1").Value = "韓国" Then
Range("B1").Value = "ソウル"
End If
End Sub
一行ずつ解説したいと思います。
が、その前に、読みにくいのでインデントをしましょう。
Private Sub CommandButton1_Click()
If Range("A1").Value = "アメリカ" Then
Range("B1").Value = "ワシントン"
ElseIf Range("A1").Value = "日本" Then
Range("B1").Value = "東京"
ElseIf Range("A1").Value = "韓国" Then
Range("B1").Value = "ソウル"
End If
End Sub
だいぶ読みやすくなりました。
Private Sub CommandButton1_Click()
CommandButton1という名前のボタンをクリックしたときに実行される処理、という意味です。
If Range("A1").Value = "アメリカ" Then
もしセルA1の値が”アメリカ”なら、次の行の処理を実行する、という意味です。
Range("B1").Value = "ワシントン"
セルB1の値に”ワシントン”と入力します。
ElseIf Range("A1").Value = "日本" Then
そうじゃなければ(最初の条件が合わなければ)、次の行の処理を実行する、という意味です。
Range("B1").Value = "東京"
セルB1の値に”東京”と入力します。
ElseIf Range("A1").Value = "韓国" Then
そうじゃなければ(一番目、二番目の条件が合わなければ)、次の行の処理を実行する、という意味です。
Range("B1").Value = "ソウル"
セルB1の値に”ソウル”と入力します。
End If
このIf Elseif 文の文末です。IFを使う文は、If文も、IF Else文も、If Elseif文も、すべて「End If」で終わります。
分岐する選択肢をもっと増やしたければ
ElseIf Range("A1").Value = "国名" Then
Range("B1").Value = "首都名"
をどんどん入れて、最後に「End If」を付ければいいです。
IF Elseif 文は、日本語に直せば「この条件ならこうしろ、そうじゃなければこう、そうじゃなければこう、そうじゃなければこう、・・・」ということです。
さて、しかし、すべての国の首都名をプログラムに書くのはたいへんです。また、首都名ならあらかじめ決まっていますが、例えば、ユーザの入力に応じて処理を分岐したい、などというときは、必ずしもユーザの入力をすべて予期できるわけではありません。
そうすると、あらかじめこちらが用意した選択肢以外の場合の処理、つまり、列挙された条件すべてに合致しなかった場合のデフォルトの処理が書ければ便利です。
そのときはこうします。
Private Sub CommandButton1_Click()
If Range("A1").Value = "アメリカ" Then
Range("B1").Value = "ワシントン"
ElseIf Range("A1").Value = "日本" Then
Range("B1").Value = "東京"
ElseIf Range("A1").Value = "韓国" Then
Range("B1").Value = "ソウル"
Else
Range("B1").Value = "わかりません"
End If
End Sub
If ElseIf 文を書いたとき、エクセルは上から順に条件をみていきます。
合致したときに、その次の行の処理を実行し、それが終わったら、当然ですが、次の条件は見ずに、If Elseif文 を終了します。
ElseIf のうしろには、条件を書きます。
Else のうしろには、条件は書きません。無条件に次の行の処理が実行されます。
さて、IF Elseif 文の書式はこうなります。
If 条件1 Then
実行する処理1
ElseIf 条件2 Then
実行する処理2
ElseIf 条件3 Then
実行する処理3
Else
デフォルトの処理
End If
これを覚えれば、条件分岐にはすべて対応できます。
が、ひとつだけ弱点があります。
単純ですが、”読みにくい”のです。
そこで、If ElseIf 文の代わりに、Select Case 文がよく使用されます。