Step2 基礎

【STEP2 基礎5】条件分岐(もし〜だったら〜)

条件分岐(もし〜だったら〜)

それでは条件分岐について説明します。

条件分岐というのは、

という流れで
「ある条件で判断をして、処理が分かれる構造」
それを、条件分岐と呼びます。

条件分岐は、Excelの関数Ifを使ったことがあれば理解しやすいと思います。

条件分岐の基本の型

条件分岐の基本の形は以下のように書きます。

If 条件式 Then

    条件式が成立した場合に実行する処理

Else

    条件式が成立しなかった場合に実行する処理

End If

という書き方をします。

日本語で書くと

もし〇〇だったら

    〇〇をする

そうでなかったら

    〇〇をする

終わり

 

という感じです。

条件式とは

条件式を作るのには、演算子という記号を使います。
演算子には、比較演算子、論理演算子があります。
言葉は難しいけど、内容は簡単です。

比較演算子は

大きい、小さい、同じ、異なる

といった比較をします。

論理演算子は、

「A かつ B」(AND)
「A または B」(OR)

といった条件の組み合わせを表します。

これらの演算子を組み合わせて条件式を作ります。

条件式を日本語で表現できれば、あとはそれを演算子を使って書くだけです。

例えば、

A1セルに数字が入力されていたとします。
そしてA1セルの値と「80」という数値を比べて、
その結果で処理を分けたいとします。

その時に、どんな条件式を書くかというと、

A1セルの値が80よりも大きい時」という条件式は

Range(“A1”).Value > 80

A1セルの値が80以下」という条件式は

Range(“A1”).Value <= 80
*「<=」小なりイコールと読んで、以下を表します。
以上は「>=」(大なりイコール)と表します。

A1セルの値が80と同じ」という条件式は

Range(“A1”).Value = 80
※この場合の「=」は代入ではなくて、イコールかどうかという比較の意味で使われます

A1セルの値が80ではない」という条件式は

Range(“A1”).Value <> 80

といったように同じでないという条件式は「<>」と書きます。

もちろんセル同士の比較もできて、例えばA1セルの値とA2セルの値が等しいかどうかは

Range(“A1”).Value = Range(“A2”).Value

という条件式になります。

他にもA1セルの値とA2セルの値を比較して

Range(“A1”).Value > Range(“A2”).Value(A1がA2よりも大きい)
Range(“A1”).Value < Range(“A2”).Value(A1がA2よりも小さい)Range(“A1”).Value >= Range(“A2”).Value(A1がA2以上)
Range(“A1”).Value <= Range(“A2”).Value
(A1がA2以下)Range(“A1”).Value <> Range(“A2”).Value(A1とA2が異なる)

という条件式を書くこともできます。

論理演算子は比較演算子が使えるようになってからで大丈夫です。
まずは比較演算子で条件式を作れるようになりましょう。

インデントとは

条件分岐の処理を書くときには見やすく、わかりやすくなる形で書くようにしましょう。
ここで大事なのは「インデント=字下げ」です。

特にIFは、条件によって、どのような処理が行われるのかが、ぱっと見た目でわからないと混乱します。

もし〇〇だったら

処理1をする

処理2をする

処理3をする

そうでなかったら

処理4をする

処理5をする

終わり

と日本語で書いたとしても、すごく見にくくないですか?

もし〇〇だったら

    処理1をする

    処理2をする

    処理3をする

そうでなかったら

    処理4をする

    処理5をする

終わり

と書いたほうが見やすいですよね。

つまり、

と書かれているよりも

と書かれていたほうが見やすいということです。

この先頭からの字下げ(スペース)「インデント」と呼ばれるものです。タブ(TAB)キーを使って入力します。
文章でも字下げをして読みやすくすると思いますが、それと同じです。

IFを使った条件分岐では、IFの中に、更にIFを書くといったこともあるので、
処理のまとまりをインデントを意識して書くようにしましょう。

ElseIfについて

1つの条件だけではなくて、いくつかの条件で処理を分けたい場合があります。

そんな時には、

If 条件式① Then

    条件式①が成立した場合に実行する処理

ElseIf 条件式② Then

    条件式②が成立した場合に実行する処理

Else

    条件式①②が成立しなかった場合に実行する処理

End If

というように書くことができます。

ここでは条件式①②と2つの条件を使っていますが、3つでも4つでも使えます。
増やせば増やすほど、わかりにくくなるので、ほどほどに。

Selectという他の書き方もあるのですが、Ifに慣れてから使えばいいので、まずはIfを使えるようになりましょう。

Elseがないパターンについて

Elseがないパターンも書くことができます。

If 条件式 Then

    条件式が成立した場合に実行する処理

End If

でも、これ1行で

If 条件式 Then 条件式が成立した場合に実行する処理

こう書くことができます。
「とにかく条件に合った時にだけ処理をする」という時に使ったりします。

あまり多用すると、これも見にくくなるので、慣れるまでは3行のパターンで書きましょう。3行だと冗長だなと思うようになってから1行で書いても遅くはありません。

入れ子のIF

IFは、入れ子(Ifの中にIfがある)にすることもできます。

例えば、

If 条件式① Then

    If 条件式② Then

        条件式②が成立した場合に実行する処理

    Else

        条件式②が成立しなかった場合に実行する処理

    End If

End If

という感じ。
それぞれのIfに対して、End Ifがあります。

読み方は難しくはなくて、そのまま読めばいいです。

日本語で書くと。

もし①だったら

    そしてもし②だったら

        処理をする

    ②でなかったら

        処理をする

    終わり

終わり

ということです。

①でなかったら、①のElse以下を実行する
①だったら、条件式②で処理がわかれる

という流れになります。

わかりにくいかもしれませんが、こうやってIfの中にIfを入れる」ことができます。

まとめ

条件分岐はIfを使って書くことができて、パターンがいろいろあります。
複雑な条件の時には、見た目も複雑になるので、非常に見にくくなります。
複数の条件がある時に別の表現方法(Selectなど)もありますが、
まずは基本の形に慣れましょう。

わかりにくくなったら、まずは日本語で処理のまとまりを書いてみるというのも一つの方法です。
それをVBAプログラムで置き換えればいいのですから。

条件分岐はここまでです。
イメージはつかめましたか?
次は、繰り返し処理を説明したいと思います。