オーロラさんの勉強帳

SESのロースキル客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

【Excel VBA エキスパート ベーシック】IFステートメント~条件分岐~ (VBA入門19)

 

IFステートメント

IFステートメントは、条件式の結果(True/False)によって処理を分岐します。

 

IFステートメントのイメージは以下の図の通りです。

条件式がTrueの場合は、処理Aを実行し、条件式がFalseの場合は処理をせず終了します。※Falseの場合に別の処理をさ実行するように書くこともできます。

f:id:auroralights:20201214232938p:plain

 

IFステートメントの書式

IFステートメントの4つの書式を紹介します。

 

1.Trueの場合のみ処理を実行する 1文で記述するパターン

Trueの場合のみ(条件式の条件を満たしている場合のみ)処理を実行する書き方として、以下のように1文で記述する方法があります。Falseの場合は、何もしません。

 

If 条件式 Then 処理

 

サンプル

セルC3がAJIの場合に、セルE3にセルD3の値に0.55を掛けた数値を代入します。

f:id:auroralights:20201214234245p:plain

f:id:auroralights:20201214234239p:plain

 

2.Trueの場合のみ処理を実行する

Trueの場合のみ(条件式の条件を満たしている場合のみ)処理を実行する書き方です。上述の「1」と全く同じ動作をします。Trueの場合に実行する処理が複数ある場合に使いやすいです。

 

If 条件式 Then
 処理
End If

 

サンプル

セルC3がAJIの場合にセルE3にセルD3の値に0.55を掛けた値を代入します。

f:id:auroralights:20201214234756p:plain

 

3.TrueとFalseで異なる処理を実行する

条件式を満たしている場合(Trueの場合)は処理Aを、条件式を満たしていない場合は処理Bを実行する書き方です。

 

If 条件式 Then
 処理A
Else
 処理B
End If

 

サンプル

セルC3がAAAの場合は、セルE3にセルD3の値に0.45を掛けた値を代入します。

セルC3がAAAでない場合は、セルE3にセルD3の値に0.55を掛けた値を代入します。

f:id:auroralights:20201214235226p:plain

f:id:auroralights:20201214234239p:plain

 

4.条件の結果に応じて異なる処理を実行する

複数の条件によって、処理を分岐させる記述方法になります。

※複数の条件ごとに処理を分岐させる場合は、Select Caseステートメントで記述したほうが可読性が良いことがあるので、Select Case文での記述も考えるといいでしょう。

 

If 条件式1 Then
 処理1
ElseIf 条件式2 Then
 処理2
End If

 

サンプル

セルD3が100未満の場合にセルE3に文字列「C」を代入します。

セルD3が100以上200未満の場合にセルE2に文字列「B」を代入します。

f:id:auroralights:20201215001347p:plain

f:id:auroralights:20201215000305p:plain

 

If 条件式1 Then
 処理1
ElseIf 条件式2 Then
 処理2
Else
 処理3
End If

※条件1、条件2にもあてはまらないときに処理3を実行します。

 

サンプル

セルD3が100未満の場合、セルE3に文字列「C」を代入します。

セルD3が100以上200未満の場合、セルE3に文字列「B」を代入します。

上の2つの条件にあてはまらないときにセルE3に文字列「A」を代入します。

f:id:auroralights:20201215001452p:plain

f:id:auroralights:20201215000607p:plain