章末問題8−3の解答例 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Const 生徒数 As Integer = 5 Const 科目数 As Integer = 3 ' 列と行それぞれの合計点と平均点のインデックス番号を定数で定義する Const 合計点の列のインデックス番号 As Integer = 6 Const 平均点の列のインデックス番号 As Integer = 7 Const 合計点の行のインデックス番号 As Integer = 3 Const 平均点の行のインデックス番号 As Integer = 4 Dim 成績(生徒数, 科目数) As Integer Dim i, j, 合計 As Integer For i = 1 To 生徒数 For j = 1 To 科目数 成績(i, j) = Val(成績表(i, j - 1).Value) Next Next For i = 1 To 科目数 合計 = 0 For j = 1 To 生徒数 合計 = 合計 + 成績(j, i) Next 成績表(合計点の列のインデックス番号, i - 1).Value = 合計 成績表(平均点の列のインデックス番号, i - 1).Value = 合計 / 生徒数 Next 'ここが追加した部分 For i = 1 To 生徒数 合計 = 0 For j = 1 To 科目数 合計 = 合計 + 成績(i, j) Next 成績表(i, 合計点の行のインデックス番号).Value = 合計 成績表(i, 平均点の行のインデックス番号).Value = Format(合計 / 科目数, "0.0") Next End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer ' 合計点と平均点の行が必要になるので rowcount に 5 を代入する 成績表.RowCount = 5 ' ここから先は数箇所を除いて練習問題8-5と同じ 成績表.Columns(0).Width = 100 For i = 1 To 5 成績表.Columns(i).Width = 80 Next 成績表.Columns(6).Width = 120 成績表.Columns(7).Width = 120 成績表.Width = 100 + 80 * 5 + 120 * 2 + 4 ' 行の数が5に増えたので高さの設定の式をそのように変更する 成績表.Height = 成績表.ColumnHeadersHeight + 成績表.Rows(0).Height * 5 + 2 成績表(0, 0).Value = "国語" 成績表(1, 0).Value = "30" 成績表(2, 0).Value = "50" 成績表(3, 0).Value = "70" 成績表(4, 0).Value = "20" 成績表(5, 0).Value = "40" 成績表(0, 1).Value = "算数" 成績表(1, 1).Value = "10" 成績表(2, 1).Value = "80" 成績表(3, 1).Value = "100" 成績表(4, 1).Value = "40" 成績表(5, 1).Value = "90" 成績表(0, 2).Value = "理科" 成績表(1, 2).Value = "40" 成績表(2, 2).Value = "60" 成績表(3, 2).Value = "80" 成績表(4, 2).Value = "30" 成績表(5, 2).Value = "70" ' 3行目と4行目の1列目に文字を代入 成績表(0, 3).Value = "合計点" 成績表(0, 4).Value = "平均点" End Sub End Class