マクロ基本構文と読み方(プロパティとメソッド)」では、マクロを読むための基本用語を整理しながら、主に「プロパティ」と「メソッド」に関する基本構文を紹介しました。後編にあたる今回は、最も重要な概念である「オブジェクト」に焦点をあて、その指定方法や階層構造、Withステートメントなどについて詳しく紹介します。

コレクションという概念

「オブジェクト」とは「ExcelVBAが操作する対象」のことでした。前回の記事の冒頭で紹介した通りです。そして、同種のオブジェクトを複数まとめた概念を「コレクション」と呼びます。

例えば、Workbookオブジェクトが複数まとまったものは「Workbooksコレクション」と呼ばれます。オブジェクト名が単数形であるのに対し、コレクション名が複数形であることもポイントです。


同様に、Worksheetオブジェクトが複数まとまったものを「Worksheetsコレクション」と呼びますが、マクロ記録では、これにChartsコレクション(グラフを表すChartオブジェクトのコレクション)も含めた「Sheetsコレクション」として記録されます。


セルを表すRangeオブジェクトについては、コレクションの概念がないので注意が必要です。1つのセルも複数のセルもRangeオブジェクトとして扱います。

オブジェクトを指定する構文

さて。コレクションの概念について理解できたところで、前回の記事でワークシート「4月売上」が「Sheets("4月売上")」と記述されていたことを思い出して下さい。操作対象のワークシートを表すために、マクロ記録で記述されたVBAプログラム上では「Sheets」と複数形で記述されていました。そうです。ここにはコレクション名が記述されていたのです。そして、コレクション名に続いて、オブジェクトに付けられている具体的な名前(ここではワークシート名「4月売上」)が記述されています。この形が、オブジェクトを指定する構文です。
※VBAの文法に則って、より正確に記述すると、コレクション名の後に「Itemプロパティ」を記述して「コレクション名.Item("具体的なオブジェクト名")」とします。Itemプロパティは、コレクション内のメンバを指定するプロパティですが、既定のプロパティなので、ほとんどの場合省略されます。マクロ記録による記述でも省略されています。
※オブジェクトを指定する際、「具体的なオブジェクト名」ではなく、コレクション内のインデックス番号を表す数値を使って指定できます。例えば、2番目のオブジェクトは「Sheets(2)」などのように記述できます。


オブジェクトを指定するイメージは、「コレクションの中の、このオブジェクト」といった感じですね。


>次ページで、このイメージを「より正確」に解説します。