第4講 If文の学習

第5話 If...Else...文の入れ子式による5段階評価

5段階解答例その1
Private Sub CommandButton1_Click()
     ・
     ・
     ・
  '各生徒の講評
  For i = 1 To 40
    If Cells(6 + i, 7) >= 350 Then
      Cells(6 + i, 10) = "あなたはかなり優秀です。"
    Else
      If Cells(6 + i, 7) >= 300 Then
        Cells(6 + i, 10) = "おめでとう。"
      Else
        If Cells(6 + i, 7) >= 250 Then
          Cells(6 + i, 10) = "合格まであと一歩です。"
        Else
          If Cells(6 + i, 7) >= 200 Then
            Cells(6 + i, 10) = "合格まで後2歩です。"
          Else
            Cells(6 + i, 10) = "かなりのがんばりが必要です。"
          End If
        End If
      End If
    End If
  Next

End Sub

5段階解答例その2(If文のみによる)

  For i = 1 To 40
    If Cells(6 + i, 7) >= 350 Then
      Cells(6 + i, 10) = "あなたはかなり優秀です。"
    End If
    If Cells(6 + i, 7) < 350 And Cells(6 + i, 7) >= 300 Then
      Cells(6 + i, 10) = "おめでとう。"
    End If
    If Cells(6 + i, 7) < 300 And Cells(6 + i, 7) >= 250 Then
      Cells(6 + i, 10) = "合格まで後一歩です。"
    End If
    If Cells(6 + i, 7) < 250 And Cells(6 + i, 7) >= 200 Then
      Cells(6 + i, 10) = "合格まで後二歩です。"
    End If
    If Cells(6 + i, 7) < 200 Then
      Cells(6 + i, 10) = "かなりのがんばりが必要です。"
    End If
  Next

では、皆さんこのIf文とFor文を組み合わせて、
各生徒の最高点・最低点、各教科の最高点・最低点を見いだす方法を考えてみてください。
といっても、ヒントなしでは難しいのでヒントを書いておきましょう。
Private Sub CommandButton1_Click()

  Dim a As Integer, b As Integer, c As Integer, d As Integer,min As Integer,max As Integer
  a = 36
  b = 32
  c = 48
  d = 34

End Sub
この4つのデータから最大値・最小値を見いだすにはどうしたらよいでしょうか。
何のためにminとmaxという変数を用意したのか考えてください。
結果は、B5とB6のそれぞれ出力するものとします。
それでは、解答例は30行下。























コード例
Private Sub CommandButton1_Click()

  Dim a As Integer, b As Integer, c As Integer, d As Integer,min As Integer,max As Integer
  a = 36
  b = 32
  c = 48
  d = 34
  
  min = 100  'あり得ない最小値にしておく。
  If min > a Then min=a
  If min > b Then min=b
  If min > c Then min=c
  If min > d Then min=d
  Cells (5 , 2) = min

  max = 0  'あり得ない最大値にしておく。
  If max < a Then max=a
  If max < b Then max=b
  If max < c Then max=c
  If max < d Then max=d
  Cells (6 , 2) = max

End Sub
これで、B5には最小値、B6には最大値が表示されます。
どうしてでしょうか。
トレースしてみましょう。
  min = 100  'あり得ない最小値にしておく。
  If min > a Then min=a
  If min > b Then min=b
  If min > c Then min=c
  If min > d Then min=d
  Cells (5 , 2) = min
まず、1行目
  min = 100  'あり得ない最小値にしておく。
でminは100となっています。
すると2行目は、
  If min > a Then min=a
a = 36ですから、条件式が真となり、min=aが実行され、minは36となります。
3行目は、
  If min > b Then min=b
36と32に比較ですが、32の方が小さいのでmin=bが実行され、minは32となります。
4行目は、
  If min > c Then min=c
32と48の比較ですが、32>48は真ではないので、min=cは実行されません。したがって、minは32のままです。
5行目は
  If min > d Then min=d
32と34の比較ですが、再び32>34は真ではないので、min=dは実行されずminは32のままです。
すると、
  Cells (5 , 2) = min
によって、B5には確かに最小値32が表示されることになります。

  max = 0  'あり得ない最大値にしておく。
  If max < a Then max=a
  If max < b Then max=b
  If max < c Then max=c
  If max < d Then max=d
  Cells (6 , 2) = max
についてはご自分でトレースされてください。

では、皆さん
e01

e02
とシートを改良して、さらに最高点・最低点が表示されるようにコーティングも変更しましょう。


第4話へ 第6話へ

004


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

数学研究室に戻る