条件式により処理を分岐させます。
まずは、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以上の者の右に合格と表示するようにしました。
前節では真の場合の処理のみを行ないました。
今回は真偽双方で処理を行なうようにしましょう。
具体的には、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 条件式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文を使うのが普通です。
が、現時点では必要ないので書きません(面倒だったからです)。
いつか出てくるかもしれませんね。
前回のループ処理と条件分岐を組み合わせることで、かなり処理の幅が広がりました。
日々のルーティンワークをこなすなら、必要な関数を調べることでもう大体できるでしょう。
数値計算を行なうなら、配列、関数の作成と呼び出しを覚える必要があるでしょう。
ここで一端の区切りです。
次があったら配列を扱います。