【VBA】if文の基礎が5分で理解できる!Excelマクロ【条件分岐】

2020年5月9日

条件分岐を使用してないプログラムはありません!

プログラムを覚える上で条件分岐の習得は必須です。条件分岐を組み合わせることで柔軟なプログラムを作成することができます。

今回はExcelマクロ(VBA)If文を例に、誰でも5分で理解できる記事を書きました。
初心者向けに丁寧に書きますので最後までお付き合いいただけると嬉しいです。

では、確認していきましょう!

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

  • プログラミング初学者の人
  • Excelマクロ(VBA)初学者の人
  • 条件分岐の基礎を学習したい人
この記事を読むと
  • 誰でも簡単に条件分岐の基礎が理解できるようになる

関連記事

条件分岐の考え方

条件分岐の考え方

はじめに条件分岐の考え方を説明します。
条件分岐の一番簡単な考え方なのでここから理解していきましょう!

条件分岐とは

条件分岐について考えていきましょう。
例としてテストの点数で考えていきます。テストの点数を元に合格不合格の判定を行ってみましょう

テストの点数を元に条件分岐を行います。

テスト1

例では条件分岐を一つ設置しました。

テストの点数をもとに

80点以上なら合格

79点以下なら不合格

としました。

ある一定のデータをもとに結果を判定することを条件分岐と言います。
Excelマクロ(VBA)ではIf文を使用することで条件分岐を実現してます。本記事では簡単なIf分を使用して条件分岐の説明を行いたいと思います。

条件分岐がよく使用される例

条件分岐がよく使用される例を確認していきましょう!

  • エラー以外の場合に処理が実行される
  • 値が数字の場合のみ処理が続行される
  • セルに文字が入力されている場合のみ処理が続行される

処理を続行するかしないかによく使われています。
また、○○の場合のみ実行される○○以外の場合のみ実行されるといった時に使用されてます

例であげた点数の判断などでももちろん使われてます!

汎用性があり、いろいろな場面で使用されているのでぜひこの機会に学習しましょう

次からはExcelマクロのサンプルプログラムを例に確認していきます

VBAでIf文の使用法

Excelマクロ(VBA)でIf文を使用する方法を確認しましょう!
本記事では以下3種類の実装方法の確認をします。テストの条件分岐を作成することを目的に紹介します。

  • If文を使用した合格判定の実装
  • If、Elseを使用した不合格判定の実装
  • 例外処理について

Ifを使用した合格判定の実装

IIf分を使用し、合格の判定を行う処理を実装してみましょう!

80点以上であれば合格になる処理を行います
テスト2

サンプルプログラム

If文を使用したサンプルプログラムです。

 Sub ifSample1()
 
     ' 点数を入力する変数を宣言
    Dim point
     ' 点数を入力
    point = InputBox(" 得点を入力してください")
    
     'If文の開始
     If point >= 80 Then
        MsgBox " 合格です!"
    End If
 
 End Sub

処理の流れを確認しましょう

  1. 変数[point]に得点を入力(6行目)
  2. pointの得点を確認(10行目)
  3. 80点以上の場合"合格です"と表示される(point >= 80)

9行目以降の部分に条件分岐使用をしてます。
点数が80点以上の場合のみを考慮してます。

IfとElseを使用した不合格判定の実装

先ほどの処理に加えて

79点以下の場合は不合格であると表示されるプログラムを作成しましょう!

If分にElseを追加するだけで実装が可能です。

テスト3

サンプルプログラム

If文とElseを使用したサンプルプログラムです。

 Sub ifSample2()
 
     ' 点数を入力する変数を宣言
    Dim point
     ' 点数を入力
    point = InputBox(" 得点を入力してください")
    
     'If文の開始
     If point >= 80 Then
        MsgBox " 合格です!"
    Else
        MsgBox "不合格です!"
    End If
 
 End Sub

処理の流れを確認しましょう

  1. 変数[point]に得点を入力
  2. pointの得点を確認
  3. 80点以上の場合"合格です"と表示される
  4. それ以外の場合"不合格です"と表示される(Elseでそれ以外を実装)

11行と12行が追加されていることを確認してください。
サンプルプログラムでは80点以上以外の場合は不合格と表示されるプログラムに変更しました。

0未満、101点以上の除外処理を実装

If文とElse文を使用した例では0点未満や101点以上の点数が入力された場合でも合格や不合格の結果を出力させるプログラムになってます。

現実に存在しない得点の場合は条件分岐で除外しなければなりません

サンプルプログラムに変更を加えて実現していきます。

テスト4

サンプルプログラム

例外処理を考慮したサンプルプログラムです。

 Sub ifSample3()
 
     ' 点数を入力する変数を宣言
    Dim point
     ' 点数を入力
    point = InputBox(" 得点を入力してください")
    
     'If 分の開始
     If point > 100 Or point < 0 Then
        MsgBox " 実在しない得点が入力されました "
     ElseIf point >= 80 Then
        MsgBox " 合格です!"
    Else
        MsgBox "不合格です!"
    End If
 
 End Sub

処理の流れを確認しましょう

  1. 変数[point]に得点を入力
  2. pointの得点を確認
  3. 101点以上、0点未満の場合は"実在しない"と表示される(point > 100 Or point < 0)
  4. それ以外で、80点以上の場合"合格です"と表示される
  5. それ以外の場合は"不合格です"と表示される

9行目と10行目が追加されていることを確認してください。

例外処理を条件分岐の一番最初に入力することがポイントです。

一番最初に例外処理を入力することでその後のデータは全て実在する点だと判断できます。
最初に例外を省くことでわかりやすいプログラムを作成することが可能です。

VBAの条件分岐の種類

Excelマクロ(VBA)での条件分岐の種類について確認しましょう。
全部で2種類の使用方法があります。特徴を捉えて両方の説明をしていきますl

構文使用頻度使用用途など
If★★★★★・単純(3種類まで)な条件分岐に使用される
・Ifが多くなりすぎると難解なソースコーどに
 なってしまうためSelect文を使うべきである
Select Case★★☆☆☆・複雑(4種類以上)の条件分岐に使用される
・Ifに比べるとソースコードが読みやすくなる

どちらの使用方法も長所がありますが、初心者の方は一旦If文だけ覚えましょう!
If分を取得してからSelect Case文を学ぶようにすることがおすすめです。

まとめ

まとめ

いかがだったでしょう?

プログラミング初学者向けに条件分岐の基本をまとめてみました!

  • データ(テストの点数)をもとに実行される結果が変わる
  • いろいろなプログラムで使用されているのですぐに覚えるべき
  • 初心者の人はとりあえずIf文の取得をしよう!

エクセルマクロ(VBA)の学習に役立てば嬉しいです

ではまたー