HOME > エクセルVBA > 条件分岐「Ifステートメント」「Select Caseステートメント」

条件分岐(If〜Then〜Else〜End If)

 もし条件がAならBの処理をする、条件がCならDの処理を行う・・・条件によって処理を変更することを条件処理といいます。ココでは「If〜Then〜Else〜EndIf」を説明します。

・1行形式のIfステートメント
 test4では、A列の四則計算が「掛け算」のときだけ計算するように記述しています。それ以外は計算しません。

Sub test4()

Dim my_a As Long
my_a = 2

Do While my_a <= 5
If Cells(my_a, 1).Value = "掛け算" Then Cells(my_a, 4).Value = Cells(my_a, 2) * Cells(my_a, 3)
my_a = my_a + 1
Loop

End Sub

Ifステートメント

・複数の条件判断をするIfステートメント
 test3ではA列の計算方法に従い、B列とC列の数字を計算しています。答えはD列で、計算方法はA列の方法を使用します。

Sub test3()

Dim my_a As Long
my_a = 2

Do While my_a <= 5
If Cells(my_a, 1).Value = "掛け算" Then
Cells(my_a, 4).Value = Cells(my_a, 2) * Cells(my_a, 3)
ElseIf Cells(my_a, 1).Value = "割り算" Then
Cells(my_a, 4).Value = Cells(my_a, 2) / Cells(my_a, 3)
ElseIf Cells(my_a, 1).Value = "足し算" Then
Cells(my_a, 4).Value = Cells(my_a, 2) + Cells(my_a, 3)
ElseIf Cells(my_a, 1).Value = "引き算" Then
Cells(my_a, 4).Value = Cells(my_a, 2) - Cells(my_a, 3)
End If
my_a = my_a + 1
Loop

End Sub

条件分岐、Ifステートメント

条件分岐

条件分岐(Select Case〜End Select)

 Ifステートメントの場合は複数の条件判断をすることができました。しかしながら条件判断する対象が1箇所だけならSelect Case~EndSelectを使用した方がすっきりとしたプログラムになります。

下のプログラムは上記のプログラムのIfステートメントを使用せずに、Select Caseステートメントで書いた場合になります。

Sub test5()

Dim my_a As Long
my_a = 2

Do While my_a <= 5
Select Case Cells(my_a, 1).Value
Case Is = "掛け算"
Cells(my_a, 4).Value = Cells(my_a, 2) * Cells(my_a, 3)
Case Is = "割り算"
Cells(my_a, 4).Value = Cells(my_a, 2) / Cells(my_a, 3)
Case Is = "足し算"
Cells(my_a, 4).Value = Cells(my_a, 2) + Cells(my_a, 3)
Case Is = "引き算"
Cells(my_a, 4).Value = Cells(my_a, 2) - Cells(my_a, 3)
End Select
my_a = my_a + 1
Loop

End Sub

 例の場合ではあまり差がわかり難いですが、プログラムの行数が増えてくるとその差は歴然としてきます。また、VBAはインタプリンタ式のプログラム(1行ずつコードを実行する)ので行数が増えると速度が遅くなります。

 出来るだけコンパクトにプログラムを書けるように勉強しましょう。

Select Caseステートメント

繰り返し処理「For Each Nextステートメント」「Do Loopステートメント」  エクセル職人  変数

▲TOPへ移動