Excel VBA

[ExcelVBA] 条件分岐の方法を理解しよう![If文の使い方]

2020年4月3日

 

本記事はエクセル2019で動作確認を行っています。

ExcelVBAはご自身でコードを記述することが習得への近道です。

サンプルコードを実際に入力することをおすすめします。

 

困ってます
ExcelVBAでいろんな条件に対応できるコードを書けるようになりたいです。

 

本記事はこのような疑問にお答えします。

 

マクロを記述していく中で、コードを順番に動かしていくだけでは、思った処理を行えない場合があります。

様々な条件に対応するには「条件分岐」という考え方を知っておきましょう。

かんたんに説明すると、「もし○○ならば、△△の処理を行う。違うなら□□の処理を行う。」

というものです。

 

VBAを使うには必ず知っておかないといけない考え方なので、しっかり押さえていきましょう。

1度で理解できない場合は、何度も読み返すことをおすすめします。

 

条件分岐の方法を理解する前に、比較演算子について触れておきます。

 

比較演算子とは

二つの式や値を比較し、その結果を真偽値で返すものを指します。

比較には=(イコール)か否か。大きいか小さいかで比較していきます。

 

内容 演算子
等しい =
左辺が大きい >
左辺が小さい <
右辺以上 >=
右辺以下 <=
等しくない <>

 

比較演算子を使って、後述の条件式をつくっていきます。

 

それでは条件分岐の記述方法を見ていきます。

条件分岐には

1.条件に一致したときだけ処理を行う。

2.条件に応じて処理を変える。

3.複数の条件に応じて処理を行う。

の方法があります。

 

1つずつ見ていきましょう。

 

(例)

試験結果で「合否判定」を行うマクロを作成します。

実際にコードを記入し、「F8」でステップインして動きを確認しましょう。

 

問題

 

 

条件に一致したときだけ処理を行う。

 

(式)

If 条件式 Then

処理内容

End If

 

条件式に一致した場合は、処理内容のコードに入り処理を行います。

不一致の場合は処理をせずに、次のコードに飛ばされます。

 

Sub 判定1()

 'Aの3教科の合計が240点以上なら合格
 If Range("E4").Value >= 240 Then

    Range("F4").Value = "合格"
    
 End If

End Sub

 

実行結果

 

 

 

条件に応じて処理を変える。

 

(式)

If 条件式 Then

処理内容A

Else

処理内容B

End If

 

条件式に一致した場合に処理内容Aの処理を行います。

不一致の場合は、処理内容Aはスルーし処理内容Bの処理を行います。

 

Sub 判定2()
 
 Bの3教科の合計が240点以上なら合格。以下なら不合格
 If Range("E5").Value >= 240 Then
    
       Range("F5").Value = "合格"
    
  Else
    
       Range("F5").Value = "不合格"
    
  End If

End Sub

 

実行結果

 

 

複数の条件に応じて処理を行う。

 

(式)

If 条件式A Then

処理内容A

ElseIf 条件式B

処理内容B

Else

処理内容C

End If

 

条件式Aに一致した場合は処理内容Aを行います。

条件式Bに一致した場合は処理内容Bを行います。

これを繰り返し、どの条件式にも一致しない場合は、処理内容Cを行います。

 

Sub 判定3()

 If Range("E6").Value >= 240 Then

     Range("F6").Value = "素晴らしい!"

 ElseIf Range("E6").Value >= 210 Then

     Range("F6").Value = "もう少し頑張ろう。"

 Else

     Range("F6").Value = "もっと頑張ろう。"
    
 End If

End Sub

 

実行結果

 

 

If文の条件が2つ以上ある場合

 

条件式が2つ以上設定する必要がある場合には、論理演算子を使います。

具体的には「Or」や「And」を指します。

Or」とは、AかBのどちらかが条件に一致すればTrueを返し、どちらも不一致の場合はFalseを返す方法です。

And」とは、AもBも条件に一致すればTrueを返し、どちらか一方が不一致ならFalseを返す方法です。

 

(例)

If 条件式A or 条件式B Then

のような記述をします。

 

ネスト(入れ子)を使った記述方法

If文でネストを使うことにより、より複雑な条件分岐をすることが可能です。

この場合のネストとは、If分の中にさらにIf文を記述していくことです。

(例)

Sub ネスト()

 If 条件式A Then

   If 条件式B Then
    
     処理内容A
 
  Else
    
     処理内容B

  End If

 End IF

End Sub

 

今回はIfステートメントを使った条件分岐の記述方法を見てきました。

>>SelectCaseステートメントはこちら

最後まで目を通していただきありがとうございます。

-Excel VBA
-

Copyright© Ronpeee blog , 2023 All Rights Reserved.