目次
Excel VBAで条件分岐
Excel VBA で条件分岐を行う方法はいくつかありますが、今回は、If…Then…Else ステートメントを使用して、条件を判断し処理を分岐する方法を説明します。
条件が正しい場合、処理を実行する
条件が 正しい(True)のときに処理を実行するには、If…Then…ステートメントを使用します。
ステートメントが1行の場合は次のように記述します。
Sub 判定1()
If Range(“B3”).Value >= 50 Then Range(“C3”).Value = “OK”
End Sub
点数(B3セル)が50より小さいの場合、判定1()を実行すると、判定(C3セル)に値は設定されません。
点数(B3セル)が50以上の場合、判定1()を実行すると、判定(C3セル)に“OK”が設定されます。
ステートメントが複数行ある場合は次のようにIf…Then…End If のように記述します。
Sub 判定2()
If Range(“B3”).Value >= 50 Then
Range(“C3”).Value = “OK”
Range(“C3”).Interior.Color = 65535 ‘背景色を黄色に設定
End If
End Sub
点数(B3セル)が50より小さい場合、判定2()を実行すると、判定(C3セル)に値は設定されません。
点数(B3セル)が50以上の場合、判定2()を実行すると、判定(C3セル)に“OK”が設定され、背景色が黄色に設定されます。
ステートメントが複数行ある場合でも、1行で記述することはできます。
その場合、コロンで区切って記述する必要があります。
Sub 判定2()
If Range(“B3”).Value >= 50 Then
Range(“C3”).Value = “OK”: Range(“C3”).Interior.Color = 65535 ‘背景色を黄色に設定
End If
End Sub
条件が正しい場合、特定の処理を実行し、条件が正しくない場合は別の処理を実行する
条件が 正しい(True)のとき、条件が正しくない(False)ときにそれぞれ処理を実行するには、If…Then…Else ステートメントを使用します。
1つ目のブロックは条件が 正しい(True) のときに実行され、もう 1 つのブロックは条件が 正しくない(False) のときに実行されます。
Sub 判定3()
If Range(“B3”).Value >= 50 Then
Range(“C3”).Value = “OK”
Range(“C3”).Interior.Color = 65535 ‘背景色を黄色に設定
Else
Range(“C3”).Value = “NG”
Range(“C3”).Interior.Pattern = xlNone ‘背景色をなしに設定
End If
End Sub
点数(B3セル)が50以上の場合、判定3()を実行すると、判定(C3セル)に“OK”が設定され、背景色が黄色になります。
点数(B3セル)が50より小さい場合、判定3()を実行すると、判定(C3セル)に“NG”が設定され、背景色が無しになります。
条件が正しい場合、特定の処理を実行し、条件が正しくない場合は別の処理を実行する(複数条件がある場合)
条件が複数ある場合、条件が正しいブロックを実行します。If…Then…ElseIf…Else…End If のように記述します。
Sub 判定4()
If Range(“B3”).Value >= 80 Then
Range(“C3”).Value = “GOOD”
Range(“C3”).Interior.Color = 49407
ElseIf Range(“B3”).Value >= 50 Then
Range(“C3”).Value = “OK”
Range(“C3”).Interior.Color = 65535
Else
Range(“C3”).Value = “NG”
Range(“C3”).Interior.Pattern = xlNone
End If
End Sub
点数(B3セル)が80以上の場合、判定4()を実行すると、判定(C3セル)に“GOOD”が設定され、背景色がオレンジ色になります。
点数(B3セル)が50以上(かつ80より小さい)の場合、判定4()を実行すると、判定(C3セル)に“OK”が設定され、背景色が黄色に設定されます。
点数(B3セル)が50より小さい場合、判定4()を実行すると、判定(C3セル)に“NG”が設定され、背景色が無しになります。
ElseIfの条件は複数書くことができます。
まとめ
Excelのシート関数に、IF()があり、条件によって値を計算することができますが、ExcelVBAでもIFステートメントを使用し、条件によって処理を分岐することができます。
条件分岐はExcelVBAに限らず、プログラムではよく使います。
以上、Excel VBA でIFステートメントを使用して条件分岐を行うプログラムでした。