K-fix Learning & Playing

基礎編


オブジェクトとは

VBAでプログラムを作成する際に、必ず必要とされるものにオブジェクトがあります。オブジェクトは、「物」という意味ですが、VBAではExcelを構成しているすべての要素を表します。例えば、以下のようなものが代表的なオブジェクトになりますが、ほんの一部です。

オブジェクト名 Excelでの構成名
Workbook ワークブック
Worksheet ワークシート
Range セル、またはセル範囲
Interior セルの内部
Charts グラフ
Autofilter オートフィルタ

オブジェクトの階層構造

Excelのオブジェクトは階層構造をとっています。Workbookオブジェクトの下に、Worksheetオブジェクトがあり、さらにその下にRangeオブジェクトが位置しています。なぜなら、ワークブックは、ワークシートで成り立っていますし、ワークシートはセルや罫線などで構成されているからです。
VBAコードを記述する際に、いきなりRangeオブジェクトに対する処理を実行できませんので、より上位の階層から、下の階層のオブジェクトへと記述していくことで、特定のオブジェクトに対する処理が可能となります。


記述例) ブック名が"顧客情報.xls"の中のSheet1という名前のシートのセルA1。
   Workbooks("顧客情報.xls").Worksheets("Sheet1").Range("A1")

オブジェクトとコレクション

オブジェクトはExcelを構成するパーツですが、オブジェクトによっては同じものが存在しているものがあります。
例えば、Worksheetオブジェクトは1つだけであるとは限りません。1つのブック内に複数のワークシートが何枚も作れるからです。このような複数存在するオブジェクトは、まとめて管理や操作をすることができます。同じオブジェクトを集めて1つのオブジェクトにしたものをコレクションと呼びます。コレクションは、「集合体」などと訳されますので、単体のオブジェクト名に「s」を付けた複数形の名前となります。

ワークシートを例にすると、「Worksheet」が単体のオブジェクト名で、「Worksheets」がコレクションオブジェクトとなります。コレクション自身もオブジェクトとなり得ますから、コレクションオブジェクトと呼ばれる場合もあります。

-補足-

Rangeオブジェクトから直接コードを記述することも可能ですが、その場合には現在アクティブになっているWorkbookオブジェクトやWorksheetオブジェクトを参照していることが前提となります。また、オブジェクトの階層構造の最上位にはアプリケーション自身を表すApplicationオブジェクトが存在します。そのアプリケーションに属するすべてのオブジェクトが、Applicationオブジェクト以下の階層に位置します。ただ、Excel内でVBAを記述しているのであれば、明示的にApplicationオブジェクトはExcelとなっていますので、通常は最上位であるApplicationオブジェクトは省略して記述します。