OfficeType

VBA~If文~Excel

構文

If 条件 Then
条件を満たした場合の処理
End If

簡単な例

Sub test1()
If Range("A1") > 5 Then
Range("A1").Interior.Color = 65535
End If

まずIf Range("A1") > 5 Thenを実行するとセルA1の値が5より大きければ条件を満たした場合の処理Range("A1").Interior.Color = 65535を実行しセルA1が黄色になります。

image-01

セルA1の値が5以下の場合は条件を満たしていないので条件を満たした場合の処理は実行せずにEnd Ifを実行して次の行のコードに移ります。今回の場合はEnd Subなので終了します。よってセルA1の色は変わりません。

image-02

条件を満たさなかった時の処理を指定する

上の例では条件を満たさなかった時は何もせずに終了しましたが条件を満たさなかった時の処理を指定したい場合もあります。そんな時はElseを使います。

構文

  If 条件 Then
  条件を満たした場合の処理
  Else
  条件を満たさなかった場合の処理
  End If

簡単な例

Sub test2()
If Range("A1") > 5 Then
Range("A1").Interior.Color = 65535
Else
Range("A1").Interior.Color = 255
End If
End Sub

今回の例ではセルA1の値が5以下の場合は条件を満たした場合の処理が飛ばされElseを実行してから条件を満たさなかった場合の処理Range("A1").Interior.Color = 255を実行しセルA1が赤くなります。

image-03

条件判断を複数回行う場合

Elseを使った場合条件を満たした場合と満たさなかった場合の2通りに分岐できますが、3通り、4通り、5通り・・・と異なる条件ごとに処理を分岐したい場合があります。そんな時はElseIfを使います。

構文

If 条件1 Then
条件1を満たした場合の処理
ElseIf 条件2 Then
条件1を満たさず条件2を満たした場合の処理
ElseIf 条件3 Then
条件1,2を満たさず条件3を満たした場合の処理
:
:
以下ElseIfが続くかぎり
End If

簡単な例

Sub test3()
If Range("A1") > 10 Then
Range("A1").Interior.Color = 5296274
ElseIf Range("A1") > 5 Then
Range("A1").Interior.Color = 65535
ElseIf Range("A1") > 2 Then
Range("A1").Interior.Color = 255
End If
End Sub

今回の例ではまずIf Range("A1") > 10 Thenを実行します。セルA1が10より大きい場合は条件1を満たした場合の処理Range("A1").Interior.Color = 5296274を実行しセルA1が黄緑になります。実行し終わるとEnd Ifまでとび下のコードの実行に移ります。今回の場合はEnd Subなので終了します。セルA1が10以下の場合は条件1を満たした場合の処理を飛ばしElseIf Range("A1") > 5 Thenを実行し同様に条件を満たした場合は処理を実行し、満たさなかった場合は次の条件判断に飛びます。今回の例ではセルA1の値が10より大きければ黄緑、5より大きく10以下ならば黄、2より大きく5以下ならば赤、2以下ならば何もしないという条件分岐になります。最後にElseを使えば条件1,2,3を満たさなかった場合の処理も指定できます。

image-04

image-05

image-06

image-07

複数条件を満たした場合に処理を実行する

ここまで条件式の中に一つの条件のみ指定しましたが複数の条件を満たした時に処理を実行したい時もあります。そんな時はAndを使います。

簡単な例

下の画像において筆記、実技の点数が共に7以上の条件を満たせばセルC4に合と表示し、満たさなければ否と表示します。

image-08

Sub test4()
If Range("A4") >= 7 And Range("B4") >= 7 Then
Range("C4") = "合"
Else
Range("C4") = "否"
End If
End Sub

今回の例ではまずIf Range("A4") >= 7 And Range("B4") >= 7を実行します。Range("A4") >= 7とRange("B4") >= 7の間にAndがついているので、セルA4の値が7以上かつセルB4の値が7以上の条件を満たすとセルC4に合と入力されます。

image-09

どちらかでも条件を満たさなければElseの処理が実行されセルC4に否が入力されます。

image-11

複数条件うち1つでも条件を満たしたときに処理を実行する

複数条件うち1つでも条件を満たしたときに処理を実行したいときはOrを使います。

簡単な例

下の画像において筆記、実技の点数のうちどちらか一方でも7未満という条件を満たせばセルC4に否と表示し、満たさなければ(どちらも7以上)合と表示します。

image-08

Sub test5()
If Range("A4") < 7 Or Range("B4") < 7 Then
Range("C4") = "否"
Else
Range("C4") = "合"
End If
End Sub

今回の例ではまずIf Range("A4") < 7 Or Range("B4") < 7 Thenを実行します。Range("A4") < 7とRange("B4") < 7の間にOrがついているので、セルA4の値が7より小さい、もしくはセルB4の値が7より小さいの条件のうちどちらかを満たせばセルC4に否と入力されます。

image-11

どちらも条件を満たさなければElseの処理が実行されセルC4に合が入力されます。

image-09

比較演算子一覧

演算子意味
<より小さい
<=以下
>より大きい
>=以上
=等しい
<>等しくない

主な論理演算子

演算子意味
And条件式A And 条件式B条件式Aが真 かつ 条件式Bが真
Or条件式A Or 条件式B条件式Aが真 または 条件式Bが真
NotNot 条件式A条件式Aが偽