【Excel VBA】If~Then~Elseステートメントで1つの条件を満たした場合と満たさない場合の処理をそれぞれ設定する方法

【Excel VBA】If~Then~Elseステートメントで1つの条件を満たした場合と満たさない場合の処理をそれぞれ設定する方法

前回If~Thenステートメントについて解説しました。

【Excel VBA】If~ThenステートメントはVBAの中のIF関数的存在 | Excelを制する者は人生を制す ~No Excel No Life~

If~Thenステートメントでは1つの条件を満たした場合に行うべき処理を設定するだけでしたが、通常ワークシート上で使うIF関数と同様に逆にその条件を満たさない場合に行うべき処理もあわせて設定することが可能です。

その場合、If~Thenステートメントに条件の真偽で分岐をする部分に「Else」を追加することになります。

これを「If~Then~Elseステートメント」と呼びます。

今回はIf~Then~Elseステートメントについて解説していきます。

森田貢士 公式LINEバナー

If~Then~Elseステートメントの基本構文

条件式

判断基準となる条件を指定します。

たとえば、”A4セルは○ですか?”というようなYES/NOでできる質問のことです。

処理1

論理式の結果が真(TRUE)の場合に行う処理を指定します。

上記で例えた”A4セルは○ですか?”という質問にYESの場合に設定しておく処理のことです。

処理2

論理式の結果が偽(FALSE)の場合に行う処理を指定します。

上記で例えた”A4セルは○ですか?”という質問にNOの場合に設定しておく処理のことです。

使用例

40点以上が合格のテストがあったとします。

B2セルが点数、C2セルが合否欄で、B2セルが40以上の場合はC2セルの値が”○”に、40未満の場合はC2セルの値が”×”なるように設定します。

If~Then~Elseステートメント①

2行目の「If」と「Then」の間が条件式となります。

今回の条件は「B2セルが40以上」なので「Range(“B2”).Value >= 40」となります。

続いて3行目が条件を満たした場合の処理を記述します。(要は真の場合)

処理は「C2セルの値を”○”にする」なので「Range(“C2”).Value = “○”」となります。

4行目に「Else」、5行目で条件を満たさない場合の処理を記述します。(偽の場合)

6行目に「End If」で締めて終了になります。

マクロの動作イメージ

If~Then~Elseステートメント②

C2セルが最初はブランクになっています。

If~Then~Elseステートメント③

マクロを起動すると、B2セルが40以上の値が入っていればC2セルに”○”の値が返ります。

If~Then~Elseステートメント④

そして、B2セルが40未満の値であればC2セルに”×”の値が返ります。

Excel内の類似機能

If~Then~Elseステートメントに類似したExcelの代表的な機能は以下の2つです。

  • IF関数
  • 条件付き書式

関連記事は下記をご参照ください。

IF関数 | Excelを制する者は人生を制す ~No Excel No Life~

条件付き書式 | Excelを制する者は人生を制す ~No Excel No Life~

なお、If~Then~Elseステートメントは上記のような値や書式などのプロパティに限らず、範囲選択やコピー・消去などのメソッドも設定できるため、より複雑な条件分岐を設定することが可能です。

まとめ

If~Then~ElseステートメントはIf~Thenステートメントと同様に「マクロの記録」では設定できず、VBE経由でしか設定できません。

この条件分岐はVBAだけでなく他プログラミング言語でも基本的なロジックとなります。

次回はもう少し複雑な条件分岐について触れていきますね!