今回はIfステートメントを使った条件分岐について学びます。最初はとっつきにくいかもしれませんが、サンプルコードを何回か動かしていくうちに慣れていきます。ExcelのIf関数をご存知の方にとっては、比較的わかりやすい項目かもしれません。では、さっそく学んでいきましょう!
Ifステートメントとは?
Ifステートメントは、与えられた条件式によって処理を「分岐」させるためのステートメントです。分岐とはつまり二つ以上に分かれた道のことで、条件式の結果によって進むべき道が変わります。
Ifステートメントの基本形には、以下の3つがあります。形はそれぞれ違いますが、条件式の成立・不成立によって違う処理を実行する、という基本は変わりません。それぞれについて以下で見て行きましょう。
- If〜Thenステートメント
- If〜Then〜Elseステートメント
- If〜Then〜ElseIfステートメント
Ifステートメントの基本形1(If〜Thenステートメント)
Ifステートメントの一番単純な形です。条件式が成立した場合、つまり条件式がTrueと判断された場合は、If ThenとEnd Ifに囲まれたブロック内の処理が実行されます。
条件が成立しなかった場合、つまり条件式が成立しなかった場合、つまり条件式がFalseと判断された場合、Ifステートメントの中の処理は何も実行されません。
Ifステートメントの性質上、条件式には必ずBoolean型(TrueまたはFalse)の式が入ります。そのため、条件式には比較演算子や論理演算子を含む式が入ることが多いです。
If〜Thenステートメントをフローチャートにすると以下のようになります。フローチャートとは、プログラムの処理の流れを図形と矢印で模式的に示したものです。フローチャートの実行の流れは上から始まって下で終わります。
簡単なサンプルコードで確認してみましょう。ホームラン数を入力すると、30本以上の場合は「強打者!」とイミディエイトウィンドウに出力します。条件式は「ホームラン数 >= 30」の部分です。>=については、比較演算子のページで学びました。ホームラン数が「30本以上」の場合に、条件式がTrueになります。いろいろな数値を入れて試してみてください。
1 2 3 4 5 6 7 8 9 |
Sub ホームラン数チェック1 Dim ホームラン数 As Integer ホームラン数 = Inputbox("ホームラン数を入力してください。") If ホームラン数 >= 30 Then MsgBox "強打者!" End If End Sub |
ちなみに数字以外の文字を入力した場合は、正しく計算ができません。本当はその部分のエラー処理も行う必要があるのですが、今回の本質とは関係ないので省略しています。
Ifステートメントの基本形2(If〜Then〜Elseステートメント)
基本形1と違うのは、Elseブロックがあるという点です。Elseブロックは、条件式が成立しなかった場合、つまり条件式がFalseの場合に実行されます。If〜Then〜Elseステートメントをフローチャートにすると以下のようになります。
簡単なサンプルコードで確認してみましょう。ホームラン数を入力すると、30本以上の場合は「強打者!」、30本未満の時は「がんばりましょう!」とイミディエイトウィンドウに出力します。条件式は「ホームラン数 >= 30」の部分です。ホームラン数が「30本以上」の場合に条件式がTrue、ホームラン数が30本未満の時に条件式がFalseになります。
1 2 3 4 5 6 7 8 9 10 11 |
Sub ホームラン数チェック2 Dim ホームラン数 As Integer ホームラン数 = Inputbox("ホームラン数を入力してください。") If ホームラン数 >= 30 Then Msgbox "強打者!" Else Msgbox "がんばりましょう!" End If End Sub |
Ifステートメントの基本形3(If〜Then〜ElseIfステートメント)
3番目は条件式が二つに増えた形です。条件式1が成り立つ場合、条件式2が成り立つ場合、両方の条件も成り立たない場合、とで実行される処理が変わります。
この例では条件式が二つですが、ElseIfブロックを増やして条件式をさらに増やすことができます。つまりIf〜ElseIf〜ElseIf〜ElseIf…と、ElseIfのブロックを増やして条件式を複数にすることが可能です。
If〜Then〜ElseIfステートメントをフローチャートにすると以下のようになります。少し複雑に思われるかもしれませんが、条件式によって実行される処理が変わる、という流れさえ理解できればそんなに難しくありません。
簡単なサンプルコードで確認してみましょう。ホームラン数を入力すると、60本以上の場合は「日本記録!」、30本以上の場合は「強打者!」、30本未満の場合は「がんばりましょう!」とイミディエイトウィンドウに出力します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Sub ホームラン数チェック3 Dim ホームラン数 As Integer ホームラン数 = Inputbox("ホームラン数を入力してください。") If ホームラン数 >= 60 Then Msgbox "日本記録!" ElseIf ホームラン数 >= 30 Then Msgbox "強打者!" Else Msgbox "がんばりましょう!" End If End Sub |