エクセル de バブルブレーカー(Excel de Bubble Breaker)のダウンロードはこちらから
前回は、自動でプログラムを書きました。
今回はこの自動で書いたプログラムを見ていきましょう。
サンデープログラマ向けなので、プロの方は、こちらをご覧ください。
「SQLについて(安い、且つ 速いシステムを作るには)」
「ソフトバンクモバイルのシステム障害について」
「2000年問題とユーザの要望」
6.マクロの中身を表示します。
メニューバーのツール → マクロ でマクロのダイアログを表示し、Macro1 を選択し、編集ボタンをクリックします。
記録されたプログラムが表示されます。
枠線を書いて、●、得点に99999と自動で入力するプログラムが出来ているわけです。
自動で書いているプログラムなので、分かりにくく長ったらしいプログラムになっていますが、プログラムとは案外簡単なことが分かりますね。

7.自動記録されたマクロの解説。
1行目 Option Explicit
2行目 Sub Macro1()
3行目 '
4行目 ' Macro1 Macro
5行目 ' マクロ記録日 : 2007/5/2 ユーザー名 : IKUSHIMA Sadayoshi
6行目 '
7行目
8行目 '
9行目 Columns("F:IV").Select 'F列~IV列まで選択する
10行目 Selection.ColumnWidth = 3 '選択した列幅を3にする
11行目 Selection.Clear '選択した部分をクリアーする
12行目 ActiveWindow.LargeScroll ToRight:=-8 '左にページスクロールする
13行目 Range("F4:X10").Select 'F4~X10までを選択する
14行目 Selection.Borders(xlDiagonalDown).LineStyle = xlNone
'選択した部分(F4:X10)の斜め下の罫線をなしに
15行目 Selection.Borders(xlDiagonalUp).LineStyle = xlNone
'選択した部分(F4:X10)の斜め上の罫線をなしに
16行目 With Selection.Borders(xlEdgeLeft)
'以降、選択した部分(F4:X10)の左外枠線オブジェクトについて
17行目 .LineStyle = xlContinuous '線を直線に
18行目 .Weight = xlMedium '太さを中太線に
19行目 .ColorIndex = xlAutomatic '線の色を自動に
20行目 End With '左外枠の操作終了。
8.宣言、コメント部分。
1行目は、「変数を必ず宣言する」と言う意味です。
さて、変数を宣言するというのはどういうことでしょう。
ここで中学校の数学の時間を思い出してください。
文章問題を解くとき、「縦の長さを xとすると」、「A地点までの距離をxとすると」 などなどと書きなさい(書いた方がよい)と習ったかと思います。
書かなくても大体分かるものですが、複雑になると書いていないと間違いの元です。
「縦の長さを xとすると」 という部分が、変数の宣言だと思ってください(正確にはちょっと違う)
数学では、x は数値ですが、プログラムでは x は文字であったり配列であったりします。
2行目は Macro1 という名前のプログラムの塊のスタートを意味します。
必ず、最後に End Sub という記述が必要になります。
3~8行目はコメントと呼ばれるものになります。
コメントはコンピュータは実行しない、人間(プログラマ)のためのメモ書きになります。
9.オブジェクトの指定とメソッドの文法
9行目 Columns("F:IV").Select は
F列からIV列までを選択する。という意味になります。
文法としては、
オブジェクト.メソッド(メソッドの引数)
メソッドとは、オブジェクトに対する操作を表します。
Columns というのは複数形になっています。
オブジェクトが集まったコレクションと呼ばれるもので、() の中身でオブジェクトを特定していると考えてください。
つまり、列の集まりのうち、F列~IV列までを選択する。
という意味です。
実は Columns("F:IV").Select は省略されていて
本来的には、
現在、使っているワークブック(エクセルのファイル)の、現在使っているワークシートの列のうち、F列~IV列までを選択する。
Application.ActiveWorkbook.ActiveSheet.Columns("F:IV").Select
現在、開いているワークブックのうち、プログラム2.xls の中の、 Sheet1 の列のうち、F列~IV列までを選択する。
Application.Workbooks("プログラム2.xls").Worksheets("Sheet1").Columns("F:IV").Select
現在、開いているワークブックのうち、最初に開いたワークブックの最初のワークシートの列のうち、F列~IV列までを選択する。
Application.Workbooks(1).Worksheets(1).Columns("F:IV").Select
となります。
日常に置き換えると、
「田中君、山田商事に営業に行きなさい」
社員("田中君").営業("山田商事")
ジーワンシステム.営業部.("田中君").営業("山田商事")
ジーワンシステム.部課(2).社員(1).営業("山田商事")
※ 営業部のコードが2、田中君のコードが1とする
という文法になるということです。
いちいち、自社内の、田中君を呼ぶときに社名から呼ばないですね。
ですから、省略されることも多いです。
しかし、省略しない方が間違いが少ないのも事実です。
10.プロパティの操作。
10行目 Selection.ColumnWidth = 3 は
選択されたものの 列幅を3にする。という意味になります。
文法としては、
オブジェクト.プロパティ(プロパティの引数) = プロパティの値
となります。
ピリオドで区切られていて、文法的に似ているのですが先ほどとは違います。
プロパティとは、オブジェクトの性質や状態を表します。
つまり、参照することも可能です。
また、プロパティがオブジェクトになることもあります。
オブジェクトの指定は、メソッドについてと同じです。
日常に置き換えると、
「田中君の給与を40万にする」
社員("田中君").給与 = 400000
「田中君の給与を調べてメモする」
メモ = 社員("田中君").給与
という文法になるということです。
11.With ステートメント
16~20行目について
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeLeft).Weight = xlMedium
Selection.Borders(xlEdgeLeft).ColorIndex = xlAutomatic
と書くところを、オブジェクト指定の同じ部分を省略するために With という命令文(ステートメント)でまとめています。
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
オブジェクトの指定はともすれば大変長くなります。
そのため、Withを使ってまとめた方が分かりやすくなります。
また、まとめた方がプログラムが速くなります。
その理由は、日常の例で考えて見ましょう。
4月の田中君の基本給と、残業手当と、交通費をメモるとすると
メモ = キャビネット.給与ファイル.4月分("田中").基本給
メモ = キャビネット.給与ファイル.4月分("田中").残業手当
メモ = キャビネット.給与ファイル.4月分("田中").交通費
という書き方をすると、コンピュータは律儀ですから、毎回、キャビネットを開くことから始めます。
With キャビネット.給与ファイル.4月分("田中")
メモ = .基本給
メモ = .残業手当
メモ = .交通費
End With
という書き方なら、キャビネットは1回しか開かれません。
ですので、面倒くさがらずに、まとめられるときは、極力、Withでまとめましょう。
12.その他については、プログラムの横に解説をコメントしてありますので参照してください。
<< 第31回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その3」 | | 第33回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その5」 >>
>> HOME >> コラム >> 第32回目 「エクセル de バブルブレーカー(Excel de Bubble Breaker)その4」

コラムの全インデックス
アーカイブ