【Excel VBA】If~ThenステートメントはVBAの中のIF関数的存在

【Excel VBA】If~ThenステートメントはVBAの中のIF関数的存在

通常Excelで条件に応じて処理を規定したい場合、IF関数などを使用します。

VBAにおいてはその役目をIf~Thenステートメントが担うことになります。

条件分岐はVBAでも汎用性が高いため、特に意識的に覚えていきましょう。

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

森田貢士 公式LINEバナー

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

または、下記のように一行で表すことも可能です。

条件式

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

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

処理

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

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

使用例

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

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

If~Thenステートメント①

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

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

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

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

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

マクロの動作イメージ

If~Thenステートメント②

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

If~Thenステートメント③

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

もちろん、B2セルが40未満ならブランクのままになります。

上記コードでは一旦C2セルに”○”が返った後にB2セルを40未満に書き直した上でマクロを再起動しても”○”のままでブランクに書き変わったりはしません。

よって、都度C2セルの値を変動させたい場合はコードの条件をもう少し詳しく記述しなければなりません。

Excel内の類似機能

If~ThenステートメントExcelの代表的な以下の2機能です。

  • IF関数
  • 条件付き書式

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

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

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

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

まとめ

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

若干記述の仕方や活用範囲は異なりますが、考え方はまさにフォーマット関数のIF関数と同じなので、IF関数がもともと使える方であれば難なく習得できるでしょう。

条件分岐は至るところで活躍しますので、いろいろと試しながら身につけてくださいね!