第12講 配列その2
  第2話 第1話プログラムの改良


前話最終問題
解答例


プログラム解説
Private Sub CommandButton1_Click()

  Worksheets("学年総合").Cells(2, 1).Select
  jyunbi
  dainyuu
  datasyori
  hyouji
  kakutesutosyori

End Sub

Private Sub CommandButton2_Click()

  Range("B7:k50").Select
  Selection.ClearContents


  tyuukan1gakkisyoukyo
  tyuukan2gakkisyoukyo
  kimatu1gakkisyoukyo
  kimatu2gakkisyoukyo
  gakkimatusyoukyo


End Sub

ピンクの部分について解説したいと思います。
これらのプログラムソースは、
今までのソースがSheet1に記述されていたのに対して、
標準モジュールのModule1に記述されています。
実は今回は、シート間を行ったり来たりします。
このような場合は、Sheetにプログラムを記述するより、
標準モジュールにプログラムを記述した方がよいのです。
理由は私にもわかりませんが、
例えば、Sheet1上で
Sheets("1学期中間").Select
Range("H7:H46").Select
などと記述するとエラーになってしまいます。
これはどうやらすべてのシートに共通のプログラムにするためには、
特定のシートに記述するのではなく、
標準モジュールに記述するように
Visual Basicでは設定してあるようです。
シートのメタ(上)に相当するのが標準モジュールのようです。
メタというのは、上のレベルという意味です。
つまり、すべてのシートを上から眺めるときには、
標準モジュールを使うと言うことだと思います。
標準モジュールの作り方は例えばVBAProjectのSheet1
のところで右クリックをして挿入→標準モジュールとすれば作れます。
Sub jyunbi()の中の
  Sheets("1学期中間").Select
  Range("H7:H46").Select
  Selection.NumberFormatLocal = "0.0 "

の意味はシート1学期中間の平均(つまりH7からH46のセル)の数値の形式を
小数第1位まで出すように設定しています。
というのは平均は小数第一位までの表示としたいからです。
なお、Sub hyouji()の
Range("B7:F46").Select
Selection.NumberFormatLocal = "0.0"
も同様な意味です。



第1話へ 第3話へ