【VBA】if文が1から10まで一発でわかる!【条件分岐】

2020年5月14日

If文を100%使いこなせてますか?

Excelマクロ(VBA)If文が使われてないプログラムはありません。
If文を使いこなすことによってプログラミングの幅が広がり、効率的なプログラムを作成することができるようになります

本記事ではIf文の使用方法を1から10まで全てを説明します。
本記事を読むことにで効率的かつ最適化されたプログラムを作成することができるようになります!

If文を基礎から学びたい方は関連記事を読んでみてください

この記事を読んで欲しい人

  • If文の基本を学習済みの方
  • If文の種類を詳しく学習したい方
この記事を読むと
  • If文の種類が全て理解できる
  • If文の特徴が理解できる
  • If文を効果的に使用できる

If文使用方法の種類

まずはじめにIf文を使用する種類を確認しましょう!

5種類に分けてそれぞれを考えてみます。

下にいくにつれて使用難度が上がっていきます。

種類使用頻度使用難度用途
If文★★★★★★☆☆☆☆・○○の場合だけ処理
If Else文★★★☆☆★★☆☆☆・○○の場合は処理
・○○の場合以外は別の処理
If ElseIf文★★☆☆☆★★☆☆☆・○○の場合は処理
・××の場合は処理
If ElseIf Else文★★★★☆★★★☆☆・○○の場合は処理
・××の場合は処理
・どちらにも合致しない
 場合は別の処理
If文のネスト★★★☆☆★★★★☆・○○の場合は処理
・○○の場合かつ××の場合は処理

次から、それぞれの種類に対する確認していきましょう
作成したいプログラムの図テストプログラムを書きますので一つづつ確認していきましょう!

処理に条件式が必要になりますが、条件式についての詳しい説明は別記事で後日行います。

If文

If文の使用方法を確認しましょう!
一番基本的な構文になります。

この使い方がわからないとこの後のIf応用が全て理解できなくなってしまいます。If文の使い方から理解しましょう

使用構文

If文の使用構文の確認をしましょう

使用構文
If 条件式① Then
   処理①
End If
If」「Then」「End If」は定型です。
If文を使用する場合はこのような使い方になることを覚えましょう。

手順の確認を行いましょう

  • 条件式①に合致する場合、処理①の処理が行われる文になります

If文を覚えると他の文に応用ができるため確実に理解をしましょう。

作成するプログラム

作成するプログラムの確認をしましょう。
以下のプログラムの作成します。

  1. 点数の確認を行う
  2. 点数が80点以上の場合は合格と出力する

テストプログラム

テストプログラムの確認です

If point >= 80

という構文で80点以上の場合の条件を指定します。
条件に合致した場合は合格ですと出力されるプログラムになってます。

 Sub ifSample()
 
    Dim point
    point = InputBox(" 点数を入力してください")
    'Pointが80以上の場合だけ合格と表示される
    If point >= 80 Then
         MsgBox "合格です!"
    End If
    
 End Sub

If Else文

If Else文の確認をしましょう!
○○の場合とそれ以外という2択の実行ができる文になります。

考え方としてはまだ単純なのでリラックスして学びましょう

使用構文

If Else文の使用構文を確認しましょう

使用構文
If 条件式① then
   処理①
Else
   処理②
End If
If」「Then」「Else」「End If」は定型です。
If Else文を使用する場合はこのような使い方になることを覚えましょう。

詳細の処理手順を確認しましょう

  • 条件式①に合致する場合は処理①が実行されます。
  • それ以外の場合は処理②が実行されます。
  • 必ずどちらかの処理が実行されることになります。

作成するプログラム

作成するプログラムの確認をしましょう。
以下のプログラムの作成します。

  1. 点数の確認を行う
  2. 点数が80点以上の場合は合格と出力する
  3. それ以外の場合は不合格と出力する

テストプログラム

テストプログラムの確認です

Else

という構文でIf以外を指定しています。
80点以上以外(79点以下)の点数は全て不合格と出力されます。

 Sub ifElseSample()
 
    Dim point
    point = InputBox(" 点数を入力してください")
     'Point が80 点以上のとき合格と表示
    If point >= 80 Then
         MsgBox "合格です!"
    ' それ以外は不合格と表示
    Else
        MsgBox " 不合格です !"
    End If
    
 End Sub

If ElseIf文

If ElseIf文の確認をしましょう!
○○の場合は処理される。それ以外で××の場合は別の処理がされるという実行ができます。

この辺りから複雑になってきます。自分のペースで学んでいきましょう。

使用構文

使用構文
If 条件式① then
   処理①
ElseIf 条件式② Then
   処理②
End If
If」「Then」「ElseIf」「End If」は定型です。
If ElseIf文を使用する場合はこのような使い方になることを覚えましょう。

詳細の処理手順を確認しましょう

  • 条件式①に合致する場合は処理①が実行されます
  • 条件式①に合致しなかったもので条件式②に合致するものは処理②が実行されます。
  • どちらの条件にも合致しなかったものについてはどの処理も実行されません。

作成するプログラム

作成するプログラムの確認をしましょう。
以下のプログラムの作成します。

  1. 点数の確認を行う
  2. 点数が80点以上の場合は合格と出力する
  3. 点数が49点以下の場合は不合格と出力する

テストプログラム

テストプログラムの確認です

ElseIf point <= 49

という構文で49点以下を指定しています。
49点以下の場合は不合格ですと出力されるようになります。

 Sub ifElseIfSample()
 
    Dim point
    point = InputBox(" 点数を入力してください")
     'Point が80 点以上のとき合格と表示
    If point >= 80 Then
         MsgBox "合格です!"
    '  Point が49 点以下の場合は不合格と表示
    ElseIf point <= 49 Then
        MsgBox " 不合格です !"
    End If
    
 End Sub

If ElseIf Else文

If ElseIf Else文の確認をしましょう!
If Else文とIf ElseIf文の応用です。先述した処理を理解していれば簡単に理解ができます。

使用構文

使用構文
If 条件式① then
   処理①
ElseIf 条件式② Then
   処理②
Else
   処理③
End If
If」「Then」「ElseIf」「Else」「End If」は定型です。
If ElseIf Else文を使用する場合はこのような使い方になることを覚えましょう。

詳細の処理手順を確認していきましょう

  • 条件式①に合致する場合は処理①が実行される
  • 条件式①に合致しなかったもので条件式②に合致する場合は処理②が実行される
  • 条件式①条件式②も合致しない場合は処理③が実行される
  • 必ずどれかの処理が実行される

作成するプログラム

作成するプログラムの確認をしましょう。
以下のプログラムの作成します。

  1. 点数の確認を行う
  2. 点数が80点以上の場合は合格と出力する
  3. 点数が49点以下の場合は不合格と出力する
  4. それ以外(50点〜79点)は再試験と出力する

テストプログラム

テストプログラムの確認です

Else文とIfElse文を組み合わせたものになります
上の構文から順番に処理されることに注意しましょう

 Sub ifElseIfElseSample()
 
    Dim point
    point = InputBox(" 点数を入力してください")
     'Point が80 点以上のとき合格と表示
    If point >= 80 Then
         MsgBox "合格です!"
    '  Point が 49 点以下の場合は不合格と表示
    ElseIf point <= 49 Then
        MsgBox "  不合格です"
     ' それ以外は再試験を行なってくださいと表示
    Else
        MsgBox " 再試験を行なってください"
    End If
    
 End Sub

If文のネスト(入れ子)

If文のネストを確認していきましょう!
ここで新しい文はありません。If文の処理の中にIf文を入れるという考え方です。

複雑な処理になるのでフローチャートを書いてからプログラミングするとわかりやすくなります。

使用構文

使用構文
if 条件式① Then
   if 条件式② Then
      処理①②
   End If
   処理①
End If
If」「Then」「End If」は定型です。
If文のネストを使用する場合はこのような使い方になることを覚えましょう。

詳細の処理手順を確認していきましょう

  • 条件式①条件式②に合致する場合は処理①②が実行される
  • 条件式①にだけ合致する場合は処理①が実行される

作成するプログラム

作成するプログラムの確認をしましょう。
以下のプログラムの作成します。

  1. 点数の確認を行う
  2. 点数が80点以上の場合は合格と出力する
  3. さらに、点数が90手にじょうの場合は優秀と出力する

テストプログラム

テストプログラムの確認です

If文の中にIf文が入れ子(ネスト)していることが特徴です。

両方のIfに合致した場合のみ処理が行われます。

Sub ifnest()

    Dim point
    point = InputBox(" 点数を入力してください")
    
     ' Pointが80点以上の場合
    If point >= 80 Then
         'さらに、Pointが90以上の場合
        If point >= 90 Then
            MsgBox "  優秀ですね!"
        End If
         MsgBox " 合格です!"
    End If

End Sub

まとめ

いかがだったでしょう?

If文の使用方法を種類別に説明してきました。
If文を使っていないプログラムはありません。

各使用用途を理解し、効果的に使うことでより良いプログラミングを行えるようになります。

ただ、If文をネストしすぎると分かりづらいプログラミングになってしまうので注意してくださいね!

ではでは

Excelマクロ(VBA)の基礎もまとめてみました。