第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文による合否判定を加えましょう。
合格条件は合計が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
実行画面例
さらに、合否の右側に講評を付け加えます。
講評は、例えば
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話へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る