|
■Excelワークシートオブジェクト
今回は、この先の講義を進める上で欠く事の出来ない「ワークシートオブジェクト」の話しをしたいと思います。Excelは数字や文字を自由に入力できるワークシートで構成されています。Sheet1、Sheet2…などの名前がついているのがそれです。改めて言うまでもないですね。でも続けます(笑)。ワークシートはA1やC4などマス目状のセルから成り立っています。ワークシートが1枚以上集まってワークブックになります。このワークブックのことをExcelのファイルとして扱っています。

と、ありきたりの解説をした後本題に入ります。普段何気なく利用しているワークシートやセルは、マクロからみるとすべてオブジェクトになります。オブジェクトとはプログラミング用語で、簡単に言ってしまえばプログラムで操作する対象となるものを、抽象化したものです。わざわざ全ての要素をオブジェクトとして抽象化するわけは、セルのような小さな単位のものから、ワークブック、Excelそのものの様に大きな単位のものを同じプログラミング手順で扱える様にするためです。この様なプログラミング手法のことを「オブジェクト指向」といい、現在の主だったプログラミング言語(Visual
Basic,C++,Javaなど)はオブジェクト指向を採用しています。
オブジェクト指向は、プログラミングで操作する「オブジェクト」を抽象化するにあたり、いくつかルールを決めています。
オブジェクト指向 |
オブジェクト指向は、プログラミングで操作する対象を「オブジェクト(物体)」として抽象化することで、一元的に扱えるようにします。
1.プロパティ
オブジェクトの属性のことです。そのオブジェクトがどういう特性、特徴を持っているのかを定義したり表現するのに使います。
2.メソッド
オブジェクトに対し行う操作のことです。 |
注)文中の用語はVBに特化しています。他のプログラミング言語では、呼び方も違います。
例を挙げましょう。箱が目の前にあるとします。箱そのものがオブジェクトに当ります。そして、箱の形状や色、硬さなどが「箱」というオブジェクトの属性を表すプロパティになります。「箱」を「開ける」、「投げる」など行為や動作に当たるものがメソッドです。
■ワークシートをマクロで操作する
セルのデータをマクロで使えるようにするには、マクロ上で読みとる必要があります。またはその逆で、演算や分析したデータを表示する際にも、セルやワークシートにマクロ内のデータを出力してあげる必要があります。これらを行うにはワークシートオブジェクトを利用します。
ワークシートオブジェクトとは?
- ExcelのSheet1、Sheet2などのワークシートをマクロ上で扱うために抽象化されたオブジェクト
- ワークシートへの入出力の際に使う
- 実際に操作を行うのは、ワークシートオブジェクトのしたのセルオブジェクトやレンジオブジェクト
では、早速やってみましょう。Excelを立ち上げて、Sheet1に適当な文字列を入力してください。その後で、VBEを立ち上げて標準モジュールModule1を挿入します。この辺の手順は前回を参考にしてください。Module1にList1のプログラムを入力して実行してみましょう。
List1.ワークシートの内容を読みとり、メッセージボックスに表示
Public Sub TEST1()
Dim szTxt
szTxt = Sheet1.Cells(1, 1)
MsgBox szTxt
End Sub
|
2行目:Dim szTxt |
- szTxtという名前の変数を宣言
- 変数はデータを格納するための入れ物(メモリ上に確保される)
- プログラム中では、データは変数で扱う
|
3行目:szTxt=Sheet1.Cells(1,1) |
- Sheet1の1行目1列(A1)のデータをszTxtに代入
- Cell(Rows,Colums)で座標を指定。行(1〜)、列(A〜)の順に指定
- 座標は数値で指定。左上のA1セルが1,1
|
4行目:Msgbox szTxt |
- szTxt変数の内容をメッセージボックスとして表示
|
List1のプログラムは、Sheet1の1行目1列(A1)セルの内容を画面上に表示するだけのものです。ごく簡単な処理で済むのは、ワークシートをオブジェクトとして扱えるおかげです。この辺りの意味がわからない場合は、Cells()内の数値を変える事で、様々な座標のデータをマクロ上で参照出来るんだ程度の理解で構いません。前にも述べた通り、「習うより慣れろ」の精神であたりましょう。小難しい理屈は後からついてきます。
List2.マクロ上のデータをワークシートに反映する
Public Sub TEST2()
Dim szTxt
szTxt="Hello World"
Sheet1.Cells(3,3)=szTxt
End Sub
|
3行目:szTxt="Hello World" |
- szTxt変数に「Hello World」という文字を代入する
- 変数に文字や数字を代入する時にはイコール(=)をで結ぶ
- イコールの右辺の内容が左辺に代入される(szTxt ← Hello..)
- 文字列を代入する際にはダブルクオーテーション("")で囲む
|
4行目:Sheet1.Cells(3,3)=szTxt |
- Sheet1の3行目3列(C3)に、szTxtの内容を表示する
|
List2はList1とは逆に、マクロ内でデータを定義し、それをセルに表示しています。これでワークシートとマクロ間で、データのやり取りが行える様になりました。これは競馬ソフトをつくる上で、非常に重要な一歩です。
次回は変数の概念と、ワークシートを使ったちょっとした分析を行ってみます
|
|