第2講 変数を理解しよう!

第7話 成績一覧表の計算

ここでは、次のシートの和を考えます。
この話で、変数や=が数学とは違うことが理解できると思います。
n1
まず、次のファイルを開いてください。
ダウンロード用ファイル成績一覧表の計算
シートは上のようになっています。
Alt+F11でVisual Basicを起動して、
n2Sheet1をダブルクリックすると、次のようなコードが開きます。
Private Sub CommandButton1_Click()

End Sub

Private Sub CommandButton2_Click()

  Range("B9:F10").Select
  Selection.ClearContents
  Range("E7:F8").Select
  Selection.ClearContents
  Cells(1, 1).Select

End Sub

つまり、実行の部分が空欄になっています。
インターネットサーバは、ファイル名に全角文字を入れると受け付けませんので、
ダウンロード用のファイルのファイル名は、dai2koudai7wayouとなっていますが、
皆さんは、『成績一覧表の計算』などと名前を変えて保存して下さい。

さて、皆さん実行のボタンを押すと、成績一覧表が完成するように、
実行のコードを入れてください。
解答例は、30行下。


























コード例
Private Sub CommandButton1_Click()
  Dim w As Integer
  
  '出席番号1の生徒の合計と平均の計算
  w = 0
  w = w + Cells(7, 2)
  w = w + Cells(7, 3)
  w = w + Cells(7, 4)
  Cells(7, 5) = w
  Cells(7, 6) = w / 3

  '出席番号2の生徒の合計と平均の計算
  w = 0
  w = w + Cells(8, 2)
  w = w + Cells(8, 3)
  w = w + Cells(8, 4)
  Cells(8, 5) = w
  Cells(8, 6) = w / 3

  '国語の合計と平均の計算
  w = 0
  w = w + Cells(7, 2)
  w = w + Cells(8, 2)
  Cells(9, 2) = w
  Cells(10, 2) = w / 2

  '数学の合計と平均の計算
  w = 0
  w = w + Cells(7, 3)
  w = w + Cells(8, 3)
  Cells(9, 3) = w
  Cells(10, 3) = w / 2

  '英語の合計と平均の計算
  w = 0
  w = w + Cells(7, 4)
  w = w + Cells(8, 4)
  Cells(9, 4) = w
  Cells(10, 4) = w / 2

  '合計の合計と合計平均の計算
  w = 0
  w = w + Cells(7, 5)
  w = w + Cells(8, 5)
  Cells(9, 5) = w
  Cells(10, 5) = w / 2

  '平均の合計と平均の平均の計算
  w = 0
  w = w + Cells(7, 6)
  w = w + Cells(8, 6)
  Cells(9, 6) = w
  Cells(10, 6) = w / 2

End Sub

解説
  '出席番号1の生徒の合計と平均の計算
  w = 0
  w = w + Cells(7, 2)
  w = w + Cells(7, 3)
  w = w + Cells(7, 4)
  Cells(7, 5) = w
  Cells(7, 6) = w / 3
の部分を1行1行解説していきます。
まず、1行目
  '出席番号1の生徒の合計と平均の計算
の'の付いている文を注釈文といいます。
コンピュータは'が付いている文を無視します。
つまり、
  '出席番号1の生徒の合計と平均の計算
はプログラムには何の影響も与えないのです。
では何のために付けているのでしょうか。
あくまで読む人間のためのものです。注釈文を付けておけば、
  '出席番号1の生徒の合計と平均の計算
  w = 0
  w = w + Cells(7, 2)
  w = w + Cells(7, 3)
  w = w + Cells(7, 4)
  Cells(7, 5) = w
  Cells(7, 6) = w / 3
の部分で出席番号1の生徒の合計と平均を計算していることが、読む人にはわかります。
プログラムで大事なことは、他の人のためにも自分のためにもわかりやすく書く必要があります。
自分のためというと?が浮かぶ人もいらっしゃるかもしれませんが、
たくさんプログラムをしていくと、
一目ではでは何のプログラムであったか、思い出せなくなります。
ですから、自分のためにもわかりやすく書く必要があります。

さて、注目は
  w = w + Cells(7, 2)
です。もし、変数や=が数学と同じであったら、これはあり得ません。
もし数学と同じなら右辺のwを左辺に移項すれば
 0 = Cells(7, 2)
となってしまいますが、
シートを見ればお分かりのようにCells(7,2)(7行目の2列目)はB7ですから、出席番号1番の国語の成績です。
n3
それは42です。0=42という不合理な式になってしまいます。

ですから、変数も=も数学のそれとは違うのです。
変数は、前にも説明したとおり名前の付いた箱です。
そして、=は等しいではなく、その箱に左辺の値を入れよの命令です。
w = 0はむしろw ← 0と考えた方がよいのです。
wという箱に、0を入れる命令です。
n4
この状態で
  w = w + Cells(7, 2)
が実行されます。左辺においては、wの箱に入っている0とCells(7,2)つまり42を合計します。
そして、w = w + Cells(7, 2)はw ← w + Cells(7, 2)ですから、
n5となります。
次の
  w = w + Cells(7, 3)
では、現在wには42が入っていますので42とCells(7, 3)すなわちC7の98が合計され、
n6それが改めて、箱wに入れられます。
次の
  w = w + Cells(7, 4)
では、140と Cells(7, 4)すなわちn7D7の91が合計され、それが改めて箱wに入れられます。
n8

もう一度計算を追うと
n9
0+42=42 42+98=140 140+91=231
つまり、42+98+91の計算が行われたことになります。

  '出席番号2の生徒の合計と平均の計算
  w = 0
  w = w + Cells(8, 2)
  w = w + Cells(8, 3)
  w = w + Cells(8, 4)
  Cells(8, 5) = w
  Cells(8, 6) = w / 3
のついてもまったく同様です。

  '国語の合計と平均の計算
  w = 0
  w = w + Cells(7, 2)
  w = w + Cells(8, 2)
  Cells(9, 2) = w
  Cells(10, 2) = w / 2については、
n1042と22の合計と平均が求められています。



第6話へ 第3講第1話

004


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

数学研究室に戻る