第4講 If文の学習

第3話 5教科合計のif文による合否判定

第2話問題解答例
Private Sub CommandButton1_Click()

  Dim w As Byte '変数の宣言

  w = Cells(5, 2) 'エクセルシートB5から値の取得

  '合否判定
  If w >= 60 Then
    Cells(5, 5) = "合格"
  End If
  If w < 60 Then
    Cells(5, 5) = "不合格"
  End If

End Sub

こうすればIf...Ese...文を使わなくても、
合格不合格の両方を表示させることができます。

Eseは否定文であり、否定文はわかりにくいので
すべて肯定文で表現する上のようなやり方の方がよいとする考え方もあるわけです。
ですが、私は好みの問題だと思います。
ですから、
  If w >= 60 Then
    Cells(5, 5) = "合格"
  Else
    Cells(5, 5) = "不合格"
  End If

  If w >= 60 Then
    Cells(5, 5) = "合格"
  End If
  If w < 60 Then
    Cells(5, 5) = "不合格"
  End If
のどちらでもよいと思います。
自分がわかりやすいと思う方を採用すればよいのではないでしょうか。

さて、第3講第7話で完成させた『成績一覧表改良版』にIf文による合否判定を加えましょう。
w01
合格条件は合計が300以上とします。
合否の欄に合計が300以上なら合格、300未満なら不合格と表示できるようにコーティングしましょう。
解答例は30行下。






















コーティング例
Private Sub CommandButton1_Click()
    ・
    ・
    ・
  '各生徒の合否判定
  For i = 1 To 40
    If Cells(6 + i, 7) >= 300 Then
      Cells(6 + i, 9) = "合格"
    Else
      Cells(6 + i, 9) = "不合格"
    End If
  Next

End Sub
実行画面例
w02

さらに、合否の右側に講評を付け加えます。
w03
講評は、例えば
200点未満なら『かなりのがんばりが必要です。』
200以上300未満なら『合格まで後一歩です。』
300以上なら『おめでとう』
としましょう。3段階なら、点数の区分やコメントはこの通りにする必要はありません。
皆さんがいろいろ考えて遊びましょう。
さて、3段階にするにはどうしたらよいでしょうか。
実はIf文やIf...Esle...文は入れ子式に使うことが出来ます。
3段階は次のようにして可能です。
  For i = 1 To 40
    If Cells(6 + i, 7) >= 300 Then
      Cells(6 + i, 10) = "おめどうとう"
    Else
      If Cells(6 + i, 7) >= 200 Then
        Cells(6 + i,10) = "合格まで後一歩です。"
      Else
        Cells(6 + i, 10) = "かなりのがんばりが必要です。"
      End If
    End If
  Next
では、
200点未満なら『かなりのがんばりが必要です。』
200以上300未満なら『合格まで後一歩です。』
300以上350点未満なら『おめでとう』
380以上『あなたはかなり優秀です。』
の4段階評価ならどうしたらよいでしょうか。
If文をさらに入れ子式に使います。

If...Else...文とIf文の両方を考えてみましょう。
If文のみで実行させるときは、300以上350未満の条件を書かなければなりませんが、
その条件は、300未満かつ200以上です。
『かつ』にに対応するものはAndです。
したがって、Cells(6 + i, 7) < 350 And Cells(6 + i, 7) >= 300です。





第2話へ 第4話へ

004


vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る