VBAを使えるようにする為に、最初にしっかり理解する必要があるのが「条件分岐」についてです。他のプログラミング言語でもある程度用語の説明が終わると「条件分岐」の書き方について必ず学習する流れになります。まず条件分岐について、どんなものなのか。どんな時に使用するのか。具体的な書き方は?など順を追って説明していきたいと思います

条件分岐とは

条件分岐とは、条件に応じてプログラムの動きを変えたい時に使う方法です。最初の処理は一緒だけどこういう場合はこうして~等条件に分けて処理を分岐させる時に使います。一連の流れでプログラムを作ろうと思うと、条件分岐を使わないとプログラムが完成しない事がほとんどです。下記表で具体的に条件分岐の例をご説明させていただきます

条件分岐_表の例
分岐のイメージ図

ふざけた表をサンプルに用意しました。筆者のやりたい事です。

左の列に「買いたいもの・やりたい事」が一覧になっています。その隣の列に重要度(数字が高い方が重要1,2,3で設定)、その隣に費用欄があります。

これを下の表の条件に応じて「判断」欄に「◎又は×」を入力させたい。そんな時に使います。

写真の例は「費用」が¥5,000未満のものだけ◎(買ってよし!!)という判定結果になっています。

簡単な表ですが、条件を分けるとしたら色んなパターン分けが必要になります

1
マクロの実行がされたとき、判定基準の表内の値の有無で分岐する

条件分けをする際、条件の情報が入っていない場合 プログラム終了です。
という分岐が必要になります。

2
判定基準の表内のどこに値が入っているかで分岐する

「重要度」のみか、「費用」のみか「両方」か3パターンに分ける。

3
判定基準の表内の値によって各々さらに分岐する

重要度が「1」「2」「3」どれに該当するか…
費用がいくら未満か… 等によってさらに分岐する。

Ifステートメントについて

Ifステートメントの構文

If  条件式  Then

真の処理

(Else 偽の処理) ※省略可

End If

条件分岐のステートメントは何種類かありますが、最もメジャーで使用頻度が高いものが「Ifステートメント」です

先ほどの表で条件式を作るとこんな感じです。
セルC3の値が 5000円以下の場合は【◎】
5000円より多い場合は【×】をD3のセルに
代入してねという判断基準で分岐させる例です。

Sub test()

If Range(“C3”).Value <= 5000 Then
Range(“D3”).Value = “◎”
Else
Range(“D3”).Value = “×”
End If

End Sub

testプロシージャ開始
Ifステートメント開始
C3のセルの値が5000円以下だったら
D3のセルに【◎】を入れる
それ以外ならば
D3のセルに【×】を入れる
Ifステートメント終了

testプロシージャ終了

どうでしょうか。何となくわかりますでしょうか。まだ説明できていないルールも使用しているので何となくIfに囲まれた条件式の内容分かれば大丈夫です。式自体はExcelのIf関数と同じです
プログラムを書く上で、利用して欲しいのが ”インデント” と “コメント“ です。

インデント・・・字下げの事です。読みやすくする為の書き方の方法の1つです。

プログラムは階層になっています。今回の場合「プロシージャ」内に、「IFステートメント」があって、更にその中に「真の場合」と「偽の場合」があります。

視覚的に階層が分かりやすいような工夫になっています。

コメント・・・コメントとはプログラム内容と別に、メモを残せる機能です。プログラムが長くなるとコメントで説明があると振り返った際分かりやすくなります。

コメントを書く際は 文頭に '(シングルクォーテーション)をつけます
例) ‘コメントです

   Sub test()

    ‘if文開始 5000円以上で◎、それ以外で×で条件分け コメント
    If Range(“C3”).Value <= 5000 Then
インデント Range(“D3”).Value = “◎”
    Else
インデント Range(“D3”).Value = “×”
    End If

   End Sub           ※インデントとコメントを追加した参考です

まとめ

・Ifステートメント…条件分岐する際使用する命令文
If  条件式  Then
真の処理
(Else 偽の処理) ※省略可
End If

次回はIfステートメント以外の条件分岐の方法をご紹介します。
最後まで読んでいただきありがとうございます