オブジェクトの階層構造

Excelには、ブックの中にワークシートがあり、そのワークシートの中にセルがある、といったような階層構造があります。


これと同じように、ExcelVBAのオブジェクトにも階層構造があります。最上位のオブジェクトが、Excelを表す「Applicationオブジェクト」で、その下からWorkbookオブジェクト→Worksheetオブジェクト→Rangeオブジェクト・・・と続いています。


オブジェクトは階層構造をたどって指定される

先ほど紹介した「セルの背景色を『薄い緑』に設定する操作のVBAプログラム」を、階層構造をわかりやすく説明するために書き換えてみました。Interiorプロパティは「オブジェクト(ここではセル)の内部」を表す「Interiorオブジェクト」を返すプロパティ、ColorIndexプロパティは塗りつぶしの色を設定するプロパティです。

左から順番に、Excel→ブック→ワークシート→セル→セル内部と階層をたどっている様子がよくわかると思います。階層をたどる過程も「.(ピリオド)」でつなげて記述します。このピリオドも日本語の「の」に読み替えるとわかりやすいと思います。
※マクロ記録では、「Application」~「Range("B2")」までが「Selection」と記述されています。
※「_」は行継続文字です。長いステートメントを複数行に分けて記述するときに使います。


そして、一番最後のピリオドが、オブジェクトとプロパティを区切るピリオドです。つまり、「Application」~「Interior」までが「操作の対象」、つまり「オブジェクト」を表している部分なのです。こうしてみると、こんなに長いステートメントも、前回紹介したプロパティの構文であることがわかります。


ピリオドがたくさんある場合は、最後のピリオドが「オブジェクト」と「プロパティ、またはメソッド」を区切るピリオドで、その前のピリオドは「オブジェクトの階層をたどっている過程」を区切るピリオドであることがポイントです。

ちなみに、メソッドの引数がたくさん記述される場合もステートメントが長くなります。この場合も、まず「オブジェクト」と「メソッド」を区切っているピリオドを確認したら、あとは「,(カンマ)」で区切られている引数の意味をひとつひとつ読み解いていくだけです。


>続いて、重要ポイント「Withステートメント」の紹介です!