VBAのコードではコード実行の対象となるオブジェクトが特定されていないとほとんど何も出来ないといって良いほどである。オブジェクトを特定することをヘルプでは「オブジェクトを取得する」と表現している。マクロカスタマイズはこのオブジェクトの取得に始まり、オブジェクトの取得に終わると言っても過言ではない。
ここで、VBEのヘルプを起動して「Microsoft Excel のオブジェクト」という言葉を検索してもらいたい。
以下の説明はヘルプの「Microsoft Excel のオブジェクト」(検索トピックでは「Excelオブジェクトの階層構造」と表示されているかもしれない)の項目を参照しながら読んでほしいからである。。
オブジェクトはExcelを構成する要素と捉えることが出来る。
例えば次のようなものは全てオブジェクトである。
・・・等々。
ヘルプの「Microsoft Excel のオブジェクト」の項目ではオブジェクトの階層構造が示されている。それぞれの項目をクリックしていくと、次々とその下の階層のオブジェクトへたどっていくことが出来る。
実際のマクロのコードでも、この「階層をたどっていく」という感覚は必要。
ご存知のように、エクセルは複数のブックを同時に開いておくことが出来る。
次のように二つのブックを同時に開いている場合でそれぞれに同じ名前のシート「シート1」が存在するときに・・・・
エクセルアプリケーション┬ブック1┬シート1
│ ├シート2
│ ├シート3
│ ・
│ ・
└ブック2┬シート1
├シート2
├シート3
・
・
「ブック1のシート1」
「ブック2のシート1」
というふうに、それぞれのシートの親であるブックを区別するところから始めないと二つのシート1のどちらを指定したいのか、はっきり書くべきである、というのはすぐにお分かりいただけるだろう。
オブジェクトは単体で存在するものと複数で存在するものの2種類がある。複数の同じ種類のオブジェクトの集合をコレクションと表現する。コレクションはひとまとまりで一つのオブジェクトとして扱うことができる。
オブジェクトの階層構造が親子の上下関係であるなら、コレクションは兄弟姉妹関係と言える。
例えば、ワークシートは一つのブックに複数存在できるので、Worksheetsコレクションとして一つのオブジェクトとして扱うことが出来る。が、同時に開いている複数のブックのWorksheetsコレクション同士は違うオブジェクトとして扱われる。
エクセルアプリケーション┬ブック1┬シート1
│ ├シート2
│ └シート3
│
└ブック2┬シートA
├シートB
└シートC
上図を参考にすると、次のように表現できる。
ヘルプの「Microsoft Excel のオブジェクト」の項目ではライトブルーの項目が単体のオブジェクトしかないもの、ライトイエローの項目がコレクションとオブジェクトの両方持つものを示している。
前(覚えておきたい用語) 目次 次(メソッド(Method))
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||