Excel VBA


条件分岐処理

条件式により処理を分岐させます。

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

まずは、If〜Then文を使ってみましょう。
構文は、
If 条件式 Then
文(真ならば実行する)
End If
です。
条件式は前回の下のほうで説明しました。
これを満たした場合(真である場合)文を実行します。
さて、これを使う前に今回は以下のような適当なデータを用意しました。

条件分岐の定番、点数による合否判定です。

001 002 003 004 005 006 007

Private Sub CommandButton1_Click() For i = 1 To 10 If Cells(i, 2).Value >= 55 Then Cells(i, 3).Value = "合格" End If Next End Sub

実行結果は次のようになります。
得点が55以上の者の右に合格と表示するようにしました。

If〜Then〜Else : 真偽双方の処理

前節では真の場合の処理のみを行ないました。
今回は真偽双方で処理を行なうようにしましょう。
具体的には、55以上なら合格を、そうでないなら不合格を印字します。
そのために使うのがIf〜Then〜Else文です。
構文は、
If 条件式 Then
真の場合に実行する文
Else
偽の場合に実行する文
End If
です。
今回扱う例では、 条件式は合格水準か否かを判定します。
真の場合は合格を印字します。
偽の場合は不合格を印字します。
サンプルは前回の物を使うこととしました。

001 002 003 004 005 006 007 008 009

Private Sub CommandButton1_Click() For i = 1 To 10 If Cells(i, 2).Value >= 55 Then Cells(i, 3).Value = "合格" Else Cells(i, 3).Value = "不合格" End If Next End Sub

実行結果は、前回の空白のところに不合格と印字されたものです。

If〜Then〜ElseIf〜Else

真偽判定を行い、偽の場合もまた真偽判定を行なう、多段的な条件分岐文です。
構文は、
If 条件式1 Then
条件式1が真の場合に実行
ElseIf 条件式2 Then
条件式2が真の場合に実行
Else
条件式すべてが偽であった場合に実行
End If
です。
今回も、前節と同じサンプルを使って成績判定を行ないましょう。
90以上ならA+, 80以上ならA, 70以上ならB, 60以上ならC, 55以上ならD, 55未満なら不可とします。

001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022

Private Sub CommandButton1_Click() Dim p As Integer '得点 Dim s As String '評価 For i = 1 To 10 p = Cells(i, 2).Value If p >= 90 Then s = "A+" ElseIf p >= 80 Then s = "A" ElseIf p >= 70 Then s = "B" ElseIf p >= 60 Then s = "C" ElseIf p >= 55 Then s = "D" Else s = "不可" End If Cells(i, 3).Value = s Next End Sub

ちょっと長くなりましたがやってることは難しくないですね。
実行結果は以下のとおりです。

他にもある条件分岐

先ほどのように分岐が多いときはSelect Case文を使うのが普通です。
が、現時点では必要ないので書きません(面倒だったからです)。
いつか出てくるかもしれませんね。

基本事項の終わりに

前回のループ処理と条件分岐を組み合わせることで、かなり処理の幅が広がりました。
日々のルーティンワークをこなすなら、必要な関数を調べることでもう大体できるでしょう。
数値計算を行なうなら、配列、関数の作成と呼び出しを覚える必要があるでしょう。
ここで一端の区切りです。
次があったら配列を扱います。


戻る