VBAの条件分岐処理について解説。

システムトレード

この記事ではプログラミング初心者向けに、VBAの基本を分かりやすく解説しています。

主に条件分岐処理の基本事項を解説しています。

 

※当サイトではVBAの基本を解説しています。

もし、VBAの基本が分からなければ、下記リンクより基礎を学習できます。

VBAの開発環境の構築方法を解説

VBAのモジュールを作成する方法を解説

VBAのデータ入力方法を解説

VBAの変数について解説

VBAの繰り返し処理について解説

⑥VBAの条件分岐処理について解説(本記事)

Excelでバックテストする方法。【VBAによるツール開発】

 

マンモス
マンモス
はじめまして、マンモスです。
プログラミング知識ゼロからシステムトレードを自作できるようになった経験を活かし、この記事を書いてます。

 

VBAの条件分岐処理とは?

条件分岐処理とは、事前に条件を決めておき、その条件に従って処理を分岐させることです。

 

例えば

もしXの値が1以上ならAの処理を実行し、Xの値が1未満であればBの処理を実行するというよなものです。

 

VBAの比較演算子

条件分岐を判断するための式として必要になるのが、「比較演算子」です。

比較演算子は、条件を満たす場合はBoolean型の「True」の結果になります。

反対に条件を満たさない場合はBoolean型の「False」の結果になります。

 

以下が比較演算子をまとめた表です。

比較演算子説明結果
<小さい1 < 5True
>大きい3 >7False
<=以下9<=11True
>=以上1>= 7False
=等しい2 = 5False
<>等しくない1<> 9True

このように必ず結果が「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 < 10True
Or論理和5 > 1 Or  2 < 1True
Not論理否定Not 0 > 2True

「And」は右辺と左辺の両方がTrueの場合のみ、Trueの結果が得られます。

「Or」は右辺と左辺のどちらか一方でもTrueであれば、Trueの結果が得られます。

「Not」は条件式のTrueとFalseの結果が反転します。

 

If構文で使う場合、

If  Range(“A1”) =5 And Range(“B1”) > 5 Then

のようにすることで複数の条件を設定できます。

 

まとめ

条件分岐の構文は、比較演算子と論理演算子を組み合わせることで様々な条件を設定できます。

これらを活用し、いろいろな処理を実行できるようなるのです。

条件分岐の処理はプログラミングの基本中の基本のため、しっかりと覚えるようにしましょう。

タイトルとURLをコピーしました