
VBAでIf~Thenステートメントを設定される際、複数の条件式を組み合わせたい場合があるかと思います。
VBAでは「~または」の複数条件を設定する際にはOr演算子が必要になります。
今回はIf~ThenステートメントとOr演算子で複数条件(~または)を設定する方法を解説していきます。
If~ThenステートメントとOr演算子を組み合わせた際の基本構文
1 2 3 4 5 |
If 条件式1 Or 条件式2 Then 処理1 Else 条件式2 Then 処理2 End If |
もちろん「ElseIf」などでさらに条件分岐を設定することも可能です。(今回はオーソドックスな例を紹介)
条件式1
1つ目の判断基準となる条件を指定します。
たとえば、”A4セルは○ですか?”というようなYES/NOでできる質問のこと。
条件式2
条件式1と組みあせたい2つ目の判断基準となる条件を指定します。
And演算子やOr演算子と組み合わせることで条件式は2つ以上設定することが可能です。
処理1
上記複数の条件式の結果が真(TRUE)の場合に行う処理を指定します。
処理2
上記複数の条件式の結果が偽(FALSE)の場合に行う処理を指定します。
使用例
日曜日と月曜日には”休日”、それ以外の曜日は”営業日”であるお店があるとします。
A2セルが曜日、B2セルが”休日”か”営業日”のどちらか判定する欄で、A2セルの値が”日”か”月”の場合はB2セルの値が”休日”、A2セルの値がそれ以外の場合はB2セルの値が”営業日”となるように設定します。
ワークシート上でA2セルはドロップダウンで選択することとしますので、VBA上でA2セルへの入力制御は行わないこととします。
なお、入力規則については下記記事をご参照ください ↓
入力規則の基本テクニック「リスト」設定方法 | Excelを制する者は人生を制す ~No Excel No Life~
1 2 3 4 5 6 7 |
Sub 複数条件_OR() If Range("A2").Value = "日" Or Range("A2").Value = "月" Then Range("B2").Value = "休日" Else Range("B2").Value = "営業日" End If End Sub |
2行目の「If」と「Then」の間が条件式となります。
そして、条件式を複数つなげるため、条件1の後に「Or」(間に半角スペース)をつけて条件2を記述します。
今回の条件1は「A2セルが”日”」なので「Range(“A2”).Value = “日”」となり、条件2は「A2セルが”月”」なので「Range(“A2”).Value = “月”」となります。
続いて3行目が条件1を満たした場合の処理1を記述します。(条件1の真の場合)
処理は「B2セルの値を”休日”にする」なので「Range(“B2”).Value = “休日”」となります。
4行目に「Else」、5行目で条件を満たさない場合の処理(処理2)を記述します。(偽の場合)
処理2は「B2セルの値を”営業日”にする」なので「Range(“B2″).Value = “営業日”」となります。
6行目に「End If」で締めて終了になります。
マクロ動作イメージ
B2セルが最初はブランクになっています。
マクロを起動すると、A2セルが”日”か”月”の値が入っていればB2セルに”休日”の値が返ります。
そして、A2セルの値が”日”と”月”以外の値であればB2セルに”営業日”の値が返ります。
Excel内の類似機能
If~ThenステートメントとOr演算子の組み合わせにもっとも類似したExcelの機能といえば、フォーマット関数でのIF関数とOR関数の組み合わせです。(考え方はいっしょです)
VBAのコードとフォーマット関数では記述の仕方が少しばかり異なるので、フォーマット関数で設定したい場合は下記記事をご参照ください。
IF関数とOR関数で複数条件(~または)を設定する方法 | Excelを制する者は人生を制す ~No Excel No Life~
If~ThenステートメントはIF関数とくらべて、範囲選択やコピー・消去などのメソッドも設定できるため、より複雑な設定が可能です。
まとめ
Or演算子は活用する機会が多いので、ぜひともIf~Thenステートメントとセットで覚えると良いですね。
なお、And演算子はこちらの記事をご参照ください ↓
【Excel VBA】If~ThenステートメントとAnd演算子で複数条件(~かつ)を設定する方法 | Excelを制する者は人生を制す ~No Excel No Life~
Or演算子の考え方自体は下記記事をご参照ください。
【Excel VBA】比較演算子と論理演算式まとめ | Excelを制する者は人生を制す ~No Excel No Life~
ベン図だとかなり理解しやすいですね!