この記事ではプログラミング初心者向けに、VBAの基本を分かりやすく解説しています。
主に条件分岐処理の基本事項を解説しています。
※当サイトではVBAの基本を解説しています。
もし、VBAの基本が分からなければ、下記リンクより基礎を学習できます。
⑥VBAの条件分岐処理について解説(本記事)
⑦Excelでバックテストする方法。【VBAによるツール開発】
プログラミング知識ゼロからシステムトレードを自作できるようになった経験を活かし、この記事を書いてます。
VBAの条件分岐処理とは?
条件分岐処理とは、事前に条件を決めておき、その条件に従って処理を分岐させることです。
例えば
もしXの値が1以上ならAの処理を実行し、Xの値が1未満であればBの処理を実行するというよなものです。
VBAの比較演算子
条件分岐を判断するための式として必要になるのが、「比較演算子」です。
比較演算子は、条件を満たす場合はBoolean型の「True」の結果になります。
反対に条件を満たさない場合はBoolean型の「False」の結果になります。
以下が比較演算子をまとめた表です。
比較演算子 | 説明 | 例 | 結果 |
---|---|---|---|
< | 小さい | 1 < 5 | True |
> | 大きい | 3 >7 | False |
<= | 以下 | 9<=11 | True |
>= | 以上 | 1>= 7 | False |
= | 等しい | 2 = 5 | False |
<> | 等しくない | 1<> 9 | True |
このように必ず結果が「True」か「False」になります。
この比較演算子をうまく活用することで、様々な条件で動くプログラムを作成することができます。
VBAの条件分岐構文
If構文という条件分岐のための構文を紹介します。
Ifの構文
If構文はもっとも基本的な条件分岐の構文です。
構文は以下のとおりです。
If 条件式 Then
‘ここに処理を記載
End if
条件式には結果がBoolean型の「True」か「False」になる条件式を書きます。
以下の例は、もしA1セルの値が0なら、B1セルに1を入力するというプログラムです。
Sub test()
If Range(“A1”) = 0 Then
Range(“B1”) = 1
End If
End Sub
If~Elseの構文
If~Else文は通常のif文に対して、条件を満たさない場合の処理を付け加えることができます。
構文は以下のとおりです。
If 条件式 Then
‘ここに条件式を満たす場合の処理
Else
‘ここは条件を満たさない場合の処理
End if
以下の例では条件式Range(“A1”) = 0を満たす場合、セルB1に1と入力します。
満たさない場合はセルC1に2と入力されます。
どちらか一方の処理だけ実行されることに注意して下さい。
Sub test()
If Range(“A1”) = 0 Then
Range(“B1”) = 1
Else
Range(“C1”) = 2
End If
End Sub
if~ElseIf~Elseの構文
If~ElseIf~Else文は複数の条件式を設定できる構文になります。
構文は以下のとおりです。
If 条件式 Then
‘ここにIfの条件式を満たす場合の処理
ElseIf 条件式 Then
‘ここはElseIfの条件を満たす場合の処理
‘ElseIf文は1つだけでなく、複数個記載できます。
Else
‘ここは全ての条件を満たさない場合の処理
‘Elseは必須ではなく、省略可能です。
End if
Ifの条件式とElseIfの複数の条件式を書いた場合、プログラムの処理の流れは、上から順番に条件式をチェックしていき、条件を満たす場合はそれ以降の条件式をチェックしません。
Sub test()
If Range(“A1”) = 0 Then ’条件1
Range(“B1”) = 1
ElseIf Range(“A1”) = 1 Then ’条件2
Range(“B1”) = 2
ElseIf Range(“A1”) = 2 Then ’条件3
Range(“B1”) = 3
ElseIf Range(“A1”) = 3 Then ’条件4
Range(“B1”) = 4
Else
Range(“B1”) = 5
End If
End Sub
上記の例で、もし条件3の式を満たす場合は、それ以降の条件4の式とElse文は実行されません。
if~ElseIf~Else構文はどれか1つの処理のみ、実行されることになります。
複数の条件を満たす場合の処理
これまで説明してきた構文は特定の条件を満たす場合の処理でした。
ここからは複数の条件を設定して、その条件を満たす場合に処理させる方法を説明します。
If文をネストさせる
まず1つ目の方法は条件式をネストさせる方法です。
以下の例をご覧ください。
Sub test()
If Range(“A1”) = 0 Then
If Range(“B1”) = 0 Then
Range(“C1”) = 1
End If
End If
End Sub
この例ではセルA1とセルB1の両方が0の場合のみ、セルC1が1となります。
このようにネストさせることで、複数の条件式を満たす場合の処理が可能になります。
論理演算子を使う
以下の表が論理演算子の説明です。
論理演算子 | 説明 | 例 | 結果 |
---|---|---|---|
And | 論理積 | 5 > 1 And 7 < 10 | True |
Or | 論理和 | 5 > 1 Or 2 < 1 | True |
Not | 論理否定 | Not 0 > 2 | True |
「And」は右辺と左辺の両方がTrueの場合のみ、Trueの結果が得られます。
「Or」は右辺と左辺のどちらか一方でもTrueであれば、Trueの結果が得られます。
「Not」は条件式のTrueとFalseの結果が反転します。
If構文で使う場合、
If Range(“A1”) =5 And Range(“B1”) > 5 Then
のようにすることで複数の条件を設定できます。
まとめ
条件分岐の構文は、比較演算子と論理演算子を組み合わせることで様々な条件を設定できます。
これらを活用し、いろいろな処理を実行できるようなるのです。
条件分岐の処理はプログラミングの基本中の基本のため、しっかりと覚えるようにしましょう。