第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"
も同様な意味です。