マクロ実行時、より実務にフィットした処理を求める場合、Excelに詳しい指示を与えることが必要です。条件によって異なる処理内容をあらかじめ数パターン指示しておくことで柔軟な処理が可能になります。そこでよく用いられるのが「条件分岐」です。
▼ If構文の概要
- 「If」で始まって「もし~なら・・・する」というのが基本の形
- 条件に応じて処理を分けたり、複数の条件に応じた処理をしたりもできる
- 連続した処理を柔軟に処理したい際に必須の書き方
条件分岐は、使い方次第で何倍も早く作業ができるフォームにも応用できます。
If構文はマクロの自動処理には欠かせない書き方の1つなので、基本をおさえることで理解が深まります。
(*’ω’*)σ 「Sub」を「End Sub」で締めくくるように、「If」は「End If」で締めくくります。
- 条件分岐Ifを用いたフォームの例
- ▶ 見積作成|面倒な作業をExcelマクロで簡単効率化!1通60秒で完成する見積フォーム前編|VBAコピペ可
条件を満たす時だけ処理を実行する
If…Thenステートメント
もし〇〇なら△△する
If 条件式(〇〇) Then
処理内容(△△)
End If
条件式には「はい」か「いいえ」で答えられる内容を設定します。条件を満たす時、処理内容に書いた処理が実行されます。(条件を満たす時=条件式の答えが「はい」の時)条件を満たさない時は何も処理されません。
条件を満たす場合を「真」または「True」
条件を満たさない場合を「偽」または「False」と表現する言い方もあります。頭の片隅に置いておけばOKです。
サンプル プロシージャ
Sub 条件分岐1()
If Range(“D11”).Value >= 1 Then
ActiveSheet.Tab.ColorIndex = 5
End If
End Sub
条件分岐1
もしセルD11の値が1以上(100%以上)なら
シートの見出しの色を5(青)にする
以上
色の設定には56色から選べるColorIndexプロパティが使いやすいよ。
モカは53(茶色)だね。※参考記事リンク予定
条件に応じて実行する処理を分ける
If…Then…Elseステートメント
もし〇〇なら△△する、
○○じゃなければ◇◇する
If 条件式(○○) Then
処理内容A(△△)
Else
処理内容B(◇◇)
End If
条件式には「はい」か「いいえ」で答えられる内容を設定します。条件を満たす時、処理内容Aに書いた処理が実行されます。条件を満たさない時、処理内容Bに書いた処理が実行されます。
サンプル プロシージャ
Sub 条件分岐2()
If Range(“D11”).Value >= 1 Then
ActiveSheet.Tab.ColorIndex = 5
Else
ActiveSheet.Tab.ColorIndex = 3
End If
End Sub
条件分岐2
もしセルD11の値が1以上(100%以上)なら
シートの見出しの色を5(青)にする
1以上(100%以上)ではない場合
シートの見出しの色を3(赤)にする
以上
「はい」か「いいえ」の2択の時に使うんだね!
複数の条件に応じて実行する処理を分岐する
If…Then…ElseIfステートメント
もし○○なら△△する、そうじゃなくて☆☆なら◇◇する、どっちでもなければ◆◆する
If 条件式1(○○) Then
処理内容A(△△)
ElseIf 条件式2(☆☆) Then
処理内容B(◇◇)
…
Else
処理内容Z(◆◆)
End If
最初の条件式1を満たさない場合、次の条件式2を判定します。さらに条件2も満たさない場合はElseIf 条件式3 Then…と続けることも可能です。上から順に判定していき、どの条件も満たさない場合はElseの後の処理内容を実行します。「Else 処理内容」は省略することも可能です。省略すると、どの条件にも当てはまらない場合は何もしないという処理になります。
サンプル プロシージャ
Sub 条件分岐3()
If Range(“D11”).Value >= 1 Then
ActiveSheet.Tab.ColorIndex = 5
ElseIf Range(“D11”).Value >= 0.8
ActiveSheet.Tab.ColorIndex = 3
Else
Range(“D11”).AddComent “頑張りましょう”
End If
End Sub
条件分岐3
もしセルD11の値が1以上(100%以上)なら
シートの見出しの色を5(青)にする
1以上ではないが0.8以上(80%以上)なら
シートの見出しの色を3(赤)にする
1以上でも0.8以上でもないなら
セルD11に「頑張りましょう」とコメントを追加する
以上
3択以上の時はこれだね!
複数の条件を判定して実行する
Select Caseステートメント
比較対象が条件式1に当てはまる場合は処理内容Aを実行、比較対象が条件式2に当てはまる場合は処理内容Bを実行…どれにも当てはまらない場合は処理内容Zを実行
Select case 条件の比較対象
Case 条件式1
処理内容A
Case 条件式2
処理内容B
…
Case else
処理内容Z
End Select
If…Then…ElseIfステートメントと似ていますが、定めた比較対象に対して判定をしていくというのが特徴です。条件式を上から順に判定して、どの条件も満たさない場合はCase elseの後の処理を実行します。「Case Else 処理内容」は省略することも可能です。省略すると、どの条件にも当てはまらない場合は何もしないという処理になります。
サンプル プロシージャ
Sub 複数の条件を判定()
Select Case Range(“D11”).Value
Case Is >= 1
ActiveSheet.Tab.ColorIndex = 5
Case Is >= 0.9
ActiveSheet.Tab.ColorIndex = 6
Case Is >= 0.8
ActiveSheet.Tab.ColorIndex = 3
Case Else
Range(“D11”).AddComment “頑張りましょう”
End Select
End Sub
複数の条件を判定
セルD11の値を比較対象とします
比較対象(セルD11)が1以上(100%以上)の時
シートの見出しの色を5(青)にする
比較対象(セルD11)が0.9以上(90%以上)の時
シートの見出しの色を6(黄)にする
比較対象(セルD11)が0.8以上(80%以上)の時
シートの見出しの色を3(赤)にする
どの条件にも当てはまらなかった時
セルD11に「頑張りましょう」とコメントを付加
以上
比較演算子
条件式を書くときに用いる記号です。比較演算子の左側と右側を比較して、条件を満たしているかの判定をします。
比較演算子 | 内容 | 使用例 |
= | 等しい | Range(”A2”).Value = 1 セルA2が1の時 |
<> | 等しくない | Range(”A2”).Value <> 1 セルA2が1ではない時 |
>= | 以上 | Range(”A2”).Value >= 1 セルA2が1以上の時 |
<= | 以下 | Range(”A2”).Value <= 1 セルA2が1以下の時 |
> | より大きい | Range(”A2”).Value > 1 セルA2が1より大きい時 |
< | より小さい | Range(”A2”).Value < 1 セルA2が1より小さい時 |
条件分岐については以上となります。シンプルな内容だけに、これがどれだけ役に立つかピンと来ない人もいると思います。しかし!冒頭でも書いた通り、使い方次第です。ぜひこちらの記事も合わせて読んでみて下さい。→こちらから ( ゚Д゚) めんたまポーン( ゚Д )゜