IFを使った条件分岐処理(VBA編)

IFを使った条件分岐処理(VBA編)

岡本 峻輔

岡本 峻輔

ヘルプデスク/エンジニア歴2年

VBAで条件によって処理を変えるマクロを組む場合、if文を利用します。ここでは、VBAにおけるif文の使い方について解説しております。if文のソースコードや利用する演算子について知りたい方はぜひ参考にして下さい。


1.VBAにおけるifとは

1-1.ifの役割

VBAでは、if文を使うことにより条件によって処理を変えるマクロを作成することが出来ます。例えば、以下のようなマクロを組むことが出来ます。

ある値が70以上であれば、メッセージボックスに<合格>と表示され、それ以外であれば、

<不合格>と表示される。

1-2.if文の基本的な構成

if文の基本的な構成は以下の通りです。

If 条件式 then

①:条件式が真の場合

Else

②:条件式が偽の場合

End If

初めに<If>と入力し、スペースを1つ開けて条件式を入力する。またスペースを1つ空けて<then>と入力します。次に条件満たす場合の処理(=)を入力します。その後、Elseと入力し、条件を満たさなかった場合の処理(=)を入力します。最後にEnd Ifと入力します。条件式が真であれば、①の処理が実行され、②の処理は実行されません。条件式が偽の場合、②の処理が実行され、①の処理は実行されません。

if文を構成するためには、条件式で使われる演算子について理解する必要があります。次の章でif文を構成するための演算子について説明します。


2.演算子

条件式を書くためには演算子を理解しなければなりません。演算子は、大きく分けて2種類あります。[比較演算子][論理演算子]です。以下は、if文の条件式で使われる演算子についてまとめた表になります。

記号意味
==値が等しければ真
<>値が等しくなければ真
>値が大きければ真
<値が小さければ真
>=値が同じか大きければ真
<=値が同じか小さければ真
Andどちらとも真の場合、真
Orどちらかが真の場合、真
Not条件式が偽の場合、真

では、各演算子の意味と使い方について説明します。

2-1.比較演算子

2-1-1.“==”、”<>”の使い方

“==”の演算子を活用する事で特定の値のみに動作するマクロを組む事ができます。例えば、ある値(=value)100の時だけ、メッセージボックスに、「満点です」と表示されるマクロを組む場合、以下のようになります。

If value = 100 then
MsgBox "満点です"
Else

End If

”<>”の演算子は、値が異なるときに①の処理が実行され、それ以外の時に②が実行されます。そのため、上記スクリプトの”==””<>”に置き換えた場合、value100の時だけ、メッセージボックスが表示されないようになります。

2-1-2.“>”、”>=”の使い方

“>”および”>=”の演算子は、値が比較対象より大きい時に真の処理が実行されます。この2つの演算子の違いは、値が等しい場合の条件式を真とするか偽とするかにあります。“>”を使った場合、値が等しいと条件式は偽になります。

“1-1”の()をコードにすると以下のようになります。

If value >= 70 then
MsgBox "合格"
Else
MsgBox "不合格"
End If

”>=”を”>”にすると、value=70の場合はメッセージボックスに不合格と表示されます。

2-1-3.“<”,”<=”の使い方

“>”および”>=”の演算子は、値が比較対象より小さい時に真の処理が実行されます。この2つの演算子の違いも、値が等しい場合の条件式を真とするか偽とするかにあります。“<”を使った場合、値が等しいと条件式は偽になります。

以下は、ある値(=value)69以下の場合、メッセージボックスに不合格と表示され、69より値が大きければ、メッセージボックスに合格と表示されるif文になります。

If value <= 69 then
MsgBox "不合格"
Else
MsgBox "合格"
End If

”<=”を”<”にすると、value=69の場合はメッセージボックスに合格と表示されます。

2-2.論理演算子

2-2-1.“And”の使い方

Andは、複数の条件式を使いたいときに利用します。この演算子を使ったif文は以下の様な構成になります。

If 条件式1 And 条件式2 then

①:条件式1および2が真の場合

Else

②:条件式1および2のどちらかが偽の場合

End If

条件1及び2がどちらとも真のときのみ①に記載されている処理が実行されます。どちらかが偽の場合は②の処理が実行されます。以下は、ある値(=value1)70以上かつ別の値(=value2)70以上であれば、メッセージボックスに合格と表示され、どちらかの値が70未満であればメッセージボックスに不合格と表示されるif文になります。

If value1 >= 70 And value2 >= 70 then
MsgBox "合格"
Else 
MsgBox "不合格"
End If

2-2-2.“Or”の使い方

OrもAndと同じく複数の条件を使いたいときに利用します。この演算子を使ったif文は以下の様な構成になります。

If 条件式1 or 条件式2 then

①:条件式1または2のどちらかが真の場合

Else

②:条件式1および2のどちらとも偽の場合

End If

条件式1および2のどちらか1つでも真のときに①に記載されている処理が実行されます。どちらとも偽であれば②の処理が実行されます。“2-2-1”で紹介したif文のAndOrに置き換えると、ある値(=value1)70以上、または別の値(=value)70以上であれば、メッセージボックスに合格と表示され、どちらとも70未満であればメッセージボックスに不合格と表示されるif文になります。

2-2-3.“Not”の使い方

この演算子を使うと条件式が偽であるときに真の処理が実行され、条件式が真であるときに偽の処理が実行されます。if文の構成は以下の通りです。

If  Not 条件式 then

①: 条件式が偽の場合

Else

②:条件式が真の場合

End If

これまでのif文とは異なり、条件を満さない時に①に記載されている処理が実行されます。“1-1”の()Notで表現すると以下の様なif文になります。

If Not value >= 70 then
MsgBox "不合格"
Else
MsgBox "合格"
End If

3.複雑な条件分岐について

Else Ifやネストを使うことで複雑な条件分岐をもつif文を作ることが出来ます。※ネスト(=入れ子)とは、if文の中にさらにif文を入れることを指します。

先にElse Ifを紹介します。Else Ifを使ったif文の構成は以下の通りです。

If 条件式1 then

①:条件式1が真の場合

Else If 条件式2 then

②:条件式1は偽で条件式2が真の場合

Else

③条件式1及び2がどちらとも偽だった場合

End If

上記の通り、複数の条件分岐を組み合わせることが出来ます。以下は、ある値(=value)80以上で60以上でそれ以外で不合格とメッセージボックスに表示されるif文になります。

If value >= 80 then
MsgBox "優"
Else If value >= 60 then
MsgBox "良"
Else
MsgBox "不合格"
End If

次にネストを使った方法の紹介をします。ネストを使ったif文の構成は以下の通りです。

If 条件式1 then 

①:条件式1を満たす場合の処理

If 条件式2 then

③:条件式1および2を満たす場合の処理

 Else

④:条件式1は満たしているが、条件式2は満たさなかった場合の処理

End If

Else

②:条件式1を満たさなかった場合の処理

End If

Else Ifで紹介したマクロをネストで表現すると以下の通りになります。

If value >=60 then 
If value >= 80 then
  MsgBox "優"
 Else
MsgBox "良"
End If
Else
 MsgBox "不合格"
End If

Else Ifやネストを使うことでより細かい条件分岐を行うことが出来ますが、分岐を多くしすぎると後の編集や他の人との共有が困難になるので要注意です。


4.まとめ

if文を理解することで、マクロで出来ることが大幅に増えます。ぜひ、ここで得られた知識をご活用ください。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

『技術力』と『人間力』を高め市場価値の高いエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって遙かに高い水準の成果を出し、関わる全ての人々に感動を与え続ける集団でありたいと考えています。

高い水準で仕事を進めていただくためにも、弊社では次のような環境を用意しています。

  • 定年までIT業界で働くためのスキル(技術力、人間力)が身につく支援
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な人事評価制度
  • 平均残業時間17時間!毎週の稼動確認を徹底しているから実現できる働きやすい環境

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。

コメント

公式アカウントLINE限定!ボールドの内定確率が分かる無料診断実施中
公式アカウントLINE限定!
ボールドの内定確率が分かる無料診断実施中