第5講 成績個票印刷
第2話 個票印刷プログラムソース解説
骨子部分だけ再掲しましょう。
 For i = 1 To 14
  For j = 1 To 3
   If 3 * (i - 1) + j < 41 Then
    Worksheets("個票").Cells(1 + 18 * (j - 1), 2) = 3 * (i - 1) + j
   Else
    Worksheets("個票").Cells(1 + 18 * (j - 1), 2) = ""
   End If
   For k = 1 To 7
    If 3 * (i - 1) + j < 41 Then
     Worksheets("個票").Cells(3 + 18 * (j - 1), 1 + k) = Worksheets("1学期中間").Cells(6 + 3 * (i - 1) + j, 1 + k)
        ・
        ・
    Else
     Worksheets("個票").Cells(3 + 18 * (j - 1), 1 + k) = ""
        ・
        ・
    End If
   Next
  Next
    ・
    ・
 Next
シート「個票
」には3個個票入っていますので、

出席番号 37
国語 社会 数学 理科 英語 合計 平均 順位
1学期中間 7 74 69 3 67 220 44.0
クラス平均 55.2 57.3 49.1 42.9 55.8 257.7 52.0
1学期期末 84 48 19 98 36 285 57.0
クラス平均 50.2 49.2 42.3 52.2 49.4 241.9 48.5
2学期中間 46 77 78 70 39 310 62.0
クラス平均 53.9 43.7 55.2 51.7 50.1 252.0 51.1
2学期期末 46 92 28 84 14 264 52.8
クラス平均 55.6 50.9 52.8 47.6 51.8 257.4 52.0
学期末 28 4 5 69 5 111 22.2
クラス平均 47.8 53.2 50.6 52.7 52.1 253.8 51.1
学年総合 42.2 59 39.8 64.8 32.2 238 47.6
クラス平均 52.6 51.1 50.3 49.5 51.8 255.2 51.0
出席番号 38
国語 社会 数学 理科 英語 合計 平均 順位
1学期中間 67 58 33 96 49 303 60.6
クラス平均 55.2 57.3 49.1 42.9 55.8 257.7 52.0
1学期期末 28 4 55 87 29 203 40.6
クラス平均 50.2 49.2 42.3 52.2 49.4 241.9 48.5
2学期中間 98 97 9 0 99 303 75.8
クラス平均 53.9 43.7 55.2 51.7 50.1 252.0 51.1
2学期期末 60 45 58 17 70 250 50.0
クラス平均 55.6 50.9 52.8 47.6 51.8 257.4 52.0
学期末 60 59 79 2 47 247 49.4
クラス平均 47.8 53.2 50.6 52.7 52.1 253.8 51.1
学年総合 62.6 52.6 46.8 50.5 58.8 273 54.6
クラス平均 52.6 51.1 50.3 49.5 51.8 255.2 51.0
出席番号 39
国語 社会 数学 理科 英語 合計 平均 順位
1学期中間 81 23 61 28 26 219 43.8
クラス平均 55.2 57.3 49.1 42.9 55.8 257.7 52.0
1学期期末 46 22 75 95 49 287 57.4
クラス平均 50.2 49.2 42.3 52.2 49.4 241.9 48.5
2学期中間 69 16 44 63 43 235 47.0
クラス平均 53.9 43.7 55.2 51.7 50.1 252.0 51.1
2学期期末 42 7 17 55 68 189 37.8
クラス平均 55.6 50.9 52.8 47.6 51.8 257.4 52.0
学期末 14 88 77 44 36 259 51.8
クラス平均 47.8 53.2 50.6 52.7 52.1 253.8 51.1
学年総合 50.4 31.2 54.8 57 44.4 237 47.4
クラス平均 52.6 51.1 50.3 49.5 51.8 255.2 51.0


40人印刷するには、
3×14=42
の計算からシート「個票」の印刷は14回行わなければなりません。
それが最初のループFor i = 1 To 14の意味です。
ただし、14回目のループのときは、
シート「個票
」の最初の個票が出席番号40番ですから、
データを入れるのは最初の個票のみで、残りの2つの個票は空欄にしなければなりません。
それで
  For j = 1 To 3
   If 3 * (i - 1) + j < 41 Then
    Worksheets("個票").Cells(1 + 18 * (j - 1), 2) = 3 * (i - 1) + j
   Else
    Worksheets("個票").Cells(1 + 18 * (j - 1), 2) = ""
   End If

となっています。
For j = 1 To 3は、シート「個票」には個票が3つ入っているので、
j=1は1個目の個票、j=2は2個目の個票、j=3は3個目の個票
という意味です。
For k = 1 To 7は個票の項目が
国語、社会、数学、理科、英語、合計、平均の7項目あることに対応しています。
つまりk=1は国語、k=2は社会、・・・となっていきます。

かなり難解かと思いますので、
以上を参考にしてご自分でよくトレースして納得して頂ければと思います。



第5講第1話へ
 第5講第3話へ


VB入門講義応用編トップへ

VB入門講義トップへ