If~End Ifによる条件分岐について

スポンサーリンク

条件分岐とは

マクロでできなくて、VBAでコードを組むことによってできることの一つに条件分岐があります。条件分岐とは条件によって行う処理を変えることを言います。今回は代表的な条件分岐のIf~End Ifについて記載します。

VBAでIf~End Ifを使った条件の例

例えば以下のような表があったとします。

7-表1

表の中で80点を超えた人の名前のセルを黄色にするサンプルを考えることにします。
まず①セルに色をつけるコードを作り、②続いて条件を入れるIf~End If構文を組んでいきます。

スポンサーリンク

①セルに色を付けるコード

セルに色を付ける場合、Interior.ColorIndex=○○(色の番号)というコードで行うことができます。(ほかの指定もありますが、この書き方が一番簡便です。)
色の番号に関してはインターネットなどで参考にできます。
私はいつもインストラクターのネタ帳(http://www.relief.jp/itnote/archives/000482.php)というサイトで確認します。

セルのA1の色を変える黄色に変更する場合以下のような記載になります。

Cells(1,1).Interior.ColorIndex=6’A1セル(Cells(1,1))の背景色を黄色にする

②If構文は次のようなルールで記載します。

If 条件 Then’もし条件が満たされていたら
作業コード’この作業を行う。
End If’Ifの作業を終了する。

B1セルが80以上ならA1セルを黄色に塗るコードは以下のようになります。

Sub A列に色を付ける
If Cells(1,2) >= 80 Then’B1セルが80以上なら
Cells(1,1).Interior.ColorIndex = 6’A1セルを黄色に塗る。
End If’Ifの作業を終了する。
End Sub

これでIf~End Ifを使った条件分岐ができました。

③If構文を用いたコードの作成

6行目まで行うには少し面倒ですが、このコードを6回繰り返せば作れます。

Sub A列に色を付ける

If Cells(1,2) >= 80 Then’B1セルが80以上なら
Cells(1,1).Interior.ColorIndex = 6’A1セルを黄色に塗る。
End If’Ifの作業を終了する。
If Cells(2,2) >= 80 Then’B2セルが80以上なら
Cells(2,1).Interior.ColorIndex = 6’A2セルを黄色に塗る。
End If’Ifの作業を終了する。
If Cells(3,2) >= 80 Then’B3セルが80以上なら
Cells(3,1).Interior.ColorIndex = 6’A3セルを黄色に塗る。
End If’Ifの作業を終了する。
If Cells(4,2) >= 80 Then’B4セルが80以上なら
Cells(4,1).Interior.ColorIndex = 6’A4セルを黄色に塗る。
End If’Ifの作業を終了する。
If Cells(5,2) >= 80 Then’B5セルが80以上なら
Cells(5,1).Interior.ColorIndex = 6’A5セルを黄色に塗る。
End If’Ifの作業を終了する。
If Cells(6,2) >= 80 Then’B6セルが80以上なら
Cells(6,1).Interior.ColorIndex = 6’A6セルを黄色に塗る。
End If’Ifの作業を終了する。
End Sub

まとめ

IF~End If構文によって条件を分けて色分けをしました。他にElseやElse Ifを使用することでより細かい条件分けも行うことができるようになります。

複数の条件分岐を使う方法についてはこちらを参考にしてください。

If~End If構文を単体で使っても今回のように繰り返しを行う際にコードがムダに長くなり、手間もかかる場合が多いです。
そういう時には条件分岐に追加して、変数を用いて繰り返し処理を組み込んだりする方法が有効です。

If~End If構文の条件分岐と変数を使った繰り返しの処理はVBAでコードを作る上ですごく役立つので次回に載せます。

コメント