かばくん
もしこうならあれをして、違うならこうする
みたいなことをしたいです!
へびせんせい
そのような場合分けを条件分岐といいます。
プログラミングをやっているとほぼ必ずでてくるでしょう。
条件分岐はIf構文を使ってクリアできます。
条件分岐といえば、If構文
もし・・・なら、~をする。if文の基本構文
処理(True)
Else
処理(False)
End If
Ifのあとの条件式に合致するかどうかを判断します。
条件を満たすなら処理(True)が動き、条件を満たさないなら処理(False)が動きます。
If構文の最後にはEndIfで終わりますので、忘れないようにしましょう。
また、Elseは省略可能です。条件式がFalseのときは何もしないというときは、Elseを書かなくてよいです。
次に、条件式の書き方も覚えなければなりません。
条件式の書き方
比較演算子を使った条件式
数学などでも使っていた比較演算子です。
馴染みがあるので、覚えやすいですね。
比較演算子 | 説明 |
---|---|
a < b | a は b より小さい |
a <= b | a は b 以下 |
a > b | a は b より大きい |
a >= b | a は b 以上 |
a = b | a と b が等しい |
a <> b | a と b が等しくない |
論理演算子を使った条件式
上記の比較演算子を2つ使いたいときに、論理演算子を使うことができます。
AndやOrと書きます。こちらも覚えやすいですね。
論理演算子 | 説明 |
---|---|
比較演算子1 And 比較演算子2 |
比較演算子1と2がともにTrueならば、Trueを返す どちらかがFalseならば、Falseを返す |
比較演算子1 Or 比較演算子2 |
比較演算子1と2のどちらかがTrueならば、Trueを返す どちらもFalseならば、Falseを返す |
Not 比較演算子 |
比較演算子がTrueならば、Flaseを返す 比較演算子がFalseならば、Trueを返す |
ifの基本構文にさらに条件を追加する
複雑な条件を組んでいると、上記のIf文と論理演算子だけでは、条件式が足りないときがあります。
そんなとき、さらに条件を追加する方法があります。
・Ifの入れ子(ネスト)構造を使う
ElseIf文
If文の条件式がFalseのときに、さらに「もし・・・なら、~をする」を追加するのが、IfElse文です。
最初のIf文がTrueであれば処理1が実行され、ElseIf文とElse文は実行されず、EndIfされてIf文から抜けることになります。
必要に応じて、ElseIf文は何度でも追加できます。
処理1
ElseIf 条件式 Then
処理2
Else
処理3
End If
ElseIf文のサンプルコード
変数myageには、自分の年齢を代入して、実行してください。
Sub if文()
Dim myage As Long
myage = 31
If myage > 50 Then
MsgBox ("私の年齢は50歳を超えています")
ElseIf myage > 30 Then
MsgBox ("私の年齢は50歳以下で、30歳を超えています")
Else
MsgBox ("私の年齢は30歳以下です")
End If
End Sub
Ifの入れ子(ネスト)構造
If文の中に、さらにIf文を入れる、こういった構造を入れ子(ネスト)構造といいます。
これは、If文に限ったことではなく、プログラミングを行う上でよく出てくる構造です。
プログラムがどういう流れで実行されるのかをよく考え、しっかり理解しましょう。
If 条件式2 Then
処理(True)
End If
End If
どう処理されるかというと、
- 最初のIfの条件式1が判定
- 条件式1がTrueであるなら、中のIf文に進む
- 次のIfの条件式2が判定
- 条件式2がTrueであるなら、処理が実行される
- もし、Falseなら何も実行されず、If文から抜ける
となります。
ネストはプログラミングでよく出る構造ですが、どうしても必要なケースのときのみの使用にしましょう。ネストが深くなるにつれて、プログラムの可読性が悪くなります。
ほとんどのケースでは、論理演算子とElseIf文まで使用すれば、条件制御が可能なはずです。
プログラミングで重要な条件分岐では、主にIf文を使います。
しかし、もう一つ、条件分岐を実行できるコマンドがあります。それは、Select Case文です。
Select Case文は条件式が簡単で、かつ複数あるようなときに使われることが多いですが、絶対にSelect
Case文を使うべき、といったことはありません。
If文でもまったく同じことが実装できるのです。Select Case文については、また後ほど触れます。
If文についての練習問題
へびせんせい
まず、Excelシート1のA1セルに自分でなにか数値を入力しなさい。
その後、プログラムで、A1セルの値が100以上なら「入力されている値は100以上です」、
100未満なら「入力されている値は100未満です」とMsgBoxで表示しなさい。
また、何も入力されていないなら、「A1セルに数値を入力してください」とMsgBoxで表示せよ。
*条件式の「何も入力されていない」は、If Range("A1").Value = "" Then と書ける