まさ工房

ExcelVBAとAcessDBを利用した業務支援ツールを作成する工房です

【Excelマクロ・VBA】IF文(条件分岐)の使い方を知りたいです。教えて!

       f:id:m_kbou:20190603082424p:plain

ExcelVBAでプログラミングをしていくと、ある条件の時だけ「処理を実行したい」や「内容を変更したい」等の分岐判定を行いたいケースがあります。そのような場合は、IF文を使用する事で処理を分岐させる事ができるようになります。今回はIF文の使い方について紹介します。

 

【目次】

 

構文

記述方法は以下の様になります。 

=======================================================================

If [条件式] Then
     [処理①]
Else
     [処理②]
End If

=======================================================================

[説明]:

[条件式]には分岐させる条件を記述し、[処理①]には、その条件に合った場合に実行する処理内容を記述します。また、[処理②]には、その条件に合わなかった場合に実行する処理内容を記述します。内容を纏めると、「もし[条件式]の条件に合う場合には[処理①]を実施し、合わない場合には[処理②]を実施して下さい。」との意味になります。また、条件式には比較演算子を用いた条件を記述します。比較演算子を以下一覧に纏めましたので、参考にして下さい。

f:id:m_kbou:20190514063122p:plain 

使い方

使い方について、具体的に説明していきます。

分岐する条件が1つの場合の記述方法

分岐する条件が1つの場合について、以下画面を元に説明していきます。

[画面]:

f:id:m_kbou:20190513074611p:plain

※<合否判定>ボタンには、以下の記述例合否判定プロシージャが登録されている事とします。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub 合否判定()
    If Range("A2") >= 80 Then
      MsgBox "合格です!"
    Else
      MsgBox "不合格です!"
    End If
End Sub

-------------------------------------------------

内容は、
・A2セルが80以上ならば、「合格です!」をMsgBoxで表示する。
・A2セルが80未満ならば、「不合格です!」をMsgBoxで表示する。
との意味になります。

[実行例]:

(サンプル1)A2セルに90を入力し、<合否判定>ボタンをクリックします。

 f:id:m_kbou:20190513093532p:plain

(サンプル2)A2セルに60を入力し、<合否判定>ボタンをクリックします。

 f:id:m_kbou:20190513093548p:plain

 

分岐する条件が複数の場合の記述方法

分岐する条件が複数の場合について、以下画面を元に説明していきます。
※分岐条件の中に、更に分岐条件がある場合の説明となります。

[画面]:

f:id:m_kbou:20190513085844p:plain

※<合否判定>ボタンには、以下の記述例合否判定プロシージャが登録されている事とします。

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub 合否判定()
    If Range("A2") >= 80 Then
      If Range("B2") = "男" Then
        MsgBox "合格です!"
      Else
        MsgBox "不合格です!"
      End If
    Else
      If Range("B2") = "女" Then
        MsgBox "合格です!"
      Else
        MsgBox "不合格です!"
      End If
    End If
End Sub

-------------------------------------------------

内容は、
・A2セルが80以上でB2セルが男の場合、「合格です!」をMsgBoxで表示する。
・A2セルが80以上でB2セルが男以外の場合、「不合格です!」をMsgBoxで表示する。
・A2セルが80未満でB2セルが女の場合、「合格です!」をMsgBoxで表示する。
・A2セルが80未満でB2セルが女以外の場合、「不合格です!」をMsgBoxで表示する。
となります。

[実行例]:

(サンプル1)A2セルに90、B2セルに男を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513085902p:plain

(サンプル2)A2セルに90、B2セルに女を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513085918p:plain

(サンプル3)A2セルに60、B2セルに女を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513085932p:plain

(サンプル4)A2セルに60、B2セルに男を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513085951p:plain

 

論理演算子を用いた分岐条件の記述方法

論理演算子には以下の種類があります。

f:id:m_kbou:20190514063146p:plain

この論理演算子を用いた分岐条件について、以下画面を元に説明していきます。

[画面]:

f:id:m_kbou:20190513085844p:plain

※<合否判定>ボタンには、以下の各々の記述例合否判定プロシージャが登録されている事とします。

-------------------------------------------------------------------------------------------------------------

Andを使用した場合

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub 合否判定()
    If Range("A2") >= 80 And Range("B2") = "男" Then
      MsgBox "合格です!"
    Else
      MsgBox "不合格です!"
    End If
End Sub

-------------------------------------------------

内容は、
・A2セルが80以上でB2セルが男の場合、「合格です!」をMsgBoxで表示する。
・上記以外の場合、「不合格です!」をMsgBoxで表示する。
となります。

[実行例]:

(サンプル1)A2セルに90、B2セルに男を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513102536p:plain

(サンプル2)A2セルに60、B2セルに男を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513102600p:plain

-------------------------------------------------------------------------------------------------------------

Orを使用した場合

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub 合否判定()
    If Range("A2") >= 80 Or Range("B2") = "男" Then
      MsgBox "合格です!"
    Else
      MsgBox "不合格です!"
    End If
End Sub

-------------------------------------------------

内容は、
・A2セルが80以上又はB2セルが男の場合、「合格です!」をMsgBoxで表示する。
・上記以外の場合、「不合格です!」をMsgBoxで表示する。
となります。

[実行例]:

(サンプル1)A2セルに90、B2セルに女を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513103157p:plain

(サンプル2)A2セルに60、B2セルに女を入力し、<合否判定>ボタンをクリックします。

 f:id:m_kbou:20190513103215p:plain

-------------------------------------------------------------------------------------------------------------

Notを使用した場合

[記述例]:

※以下の記述例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方については、VBEの開き方を参考にして下さい。

-------------------------------------------------

Sub 合否判定()
    If Not Range("B2") = "男" Then
      MsgBox "合格です!"
    Else
      MsgBox "不合格です!"
    End If
End Sub

-------------------------------------------------

内容は、
・B2セルが男で無い場合、「合格です!」をMsgBoxで表示する。
・上記以外の場合、「不合格です!」をMsgBoxで表示する。
となります。

[実行例]:

(サンプル1)B2セルに女を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513103101p:plain

(サンプル2)B2セルに男を入力し、<合否判定>ボタンをクリックします。

f:id:m_kbou:20190513103117p:plain

------------------------------------------------------------------------------------------------------------- 

 

おわりに

IF文はプログラミングをする上で、必ず使用する構文となります。適材適所で使用してもらえれば、より読みやすく・綺麗なプログラムが組めるようになると思います。是非有効に活用して下さい。