
IF文は処理を分岐させる時に役立ちます。
前回の記事ではIF文を使って処理を分岐させる方法を紹介しました。
しかし、前回は条件が当てはまった時に行う処理だけを記述していましたが、条件が異なった場合にもさせたい処理がある場合、さらに処理を分岐させることが出来ます。
目次
条件が異なった場合にも処理をさせる方法
前回解説したIF文の基本の書き方はこんな感じでした↓
しかし、このままではIF文の条件が当てはまった場合にしか処理を行う事が出来ません。
異なった場合に、別の処理を行いたい場合は「Else」という語句を追加してあげます。
当てはまったときに行う処理の下に「Else」を追加し、ElseとEnd Ifの間に異なった場合にさせたい処理を記述してあげます。
Elseを使った処理を作ってみる
Elseを使うとどのような動き方をするのか、実際に作ってみましょう。
こちらは前回作った処理に少し手を加えたコードです↓
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub MessageTest() Dim Hensu As String '変数 Hensu = Range("A2").Value '←「A2」セルの値を変数に代入 If Hensu = "あああ" Then MsgBox "これは「あああ」です" Else MsgBox "これは「あああ」ではありません" End If End Sub |
前回作った処理は「A2」セルの中身を確認して「あああ」だったらメッセージを表示させるというものでした。
今回は、「あああ」以外だった場合にもメッセージボックスを表示させ、両方異なるメッセージ内容を表示させるようにしました。
このコードをコピーし、モジュールに貼り付けて実行してみましょう。
■「あああ」を入力した場合
こちらは前回同様のメッセージが表示されたと思います。
■「あああ」以外を入力した場合
「あああ」以外を入力すると、さっきとは別のメッセージが表示されるようになりました。
処理がうまく分岐している事が分かりますね。
IF文で3つ以上の分岐を作る方法
Elseを使えば、条件が「当てはまる場合」と「当てはまらない場合」の2通りの分岐を作る事が出来ました。
さらに、3つ以上の処理を分岐させることもできます。
3つ以上の分岐が必要な状況とは、例えば、じゃんけんのシステムがあったとします。
これは、セルに入力されたじゃんけんの種類(グー・チョキ・パー)に勝つ手をメッセージに表示させるというものです。
この場合、Elseだけでは対応できませんよね?
このような3つ以上の分岐が必要な場合は「ElseIf」という語句を使います。
「ElseIf」は、条件が異なった場合、さらに条件を持たせることが出来ます。
文だけでは意味不明だと思うので(すみません)下の図を見てみましょう。
ElseIfで条件①とは異なった条件②を追加して処理を分岐させています。
ElseIfはIF文の中に何個でも作る事が出来ます。
最後のElseはどの条件も当てはまらなかった場合に処理させる内容を記述します。
もちろん、Elseは必ず書く必要はありません。
ElseIfを使ってみよう
じゃんけんの処理をElseIfを使って作ってみます。
入力した手に勝つ手をメッセージで表示させる仕組みです。
先ほどのコードに手を加えたのがこちら↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub MessageTest() Dim Hensu As String '変数 Hensu = Range("A2").Value '←「A2」セルの値を変数に代入 If Hensu = "グー" Then MsgBox "勝つのはパー" '←メッセージボックスで変数の値を表示 ElseIf Hensu = "チョキ" Then MsgBox "勝つのはグー" '←メッセージボックスで変数の値を表示 Else MsgBox "勝つのはチョキ" '←メッセージボックスで変数の値を表示 End If End Sub |
このコードをコピーしてモジュールに貼り付けて動作を確認してみましょう。
■グーの場合
■チョキの場合
■パーの場合
コードの説明
このコードはじゃんけんの手に応じて、それぞれの勝ち手3パターンに処理を分岐させています。
IF文の最初の条件で、「グーならば」とし、「グー」だった場合の勝ち手「パー」を表示させています。
次に、最初の条件が異なった場合、ElseIfで「チョキならば」とし「チョキ」だった場合の勝ち手「グー」を表示させています。
最後に、上記2つの条件が異なっていた場合(グーでもチョキでもない)必然的に残された手は「パー」になるのでElseとEnd Ifの間に「パー」の勝ち手「チョキ」を表示させるようにしています。
このように間にElseIfを挟めば、複数の処理分岐を作る事が出来ます。
■次のページ