「macro コレクションとは」
「vba workbooksコレクションとは」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あることに気づきました。
VBA(Visual Basic for Applications)の、コレクションとは、コレクションオブジェクトとは何なのかを調べている方による検索です。
コレクションオブジェクトとは
コレクション・コレクションオブジェクトとは何なのかを簡単にまとめると、以下のように言うことができます。同じ種類のオブジェクトをまとめたものがコレクションオブジェクトである。
コレクションオブジェクトの名前は、その個々のオブジェクト・単一オブジェクトの名前の複数形になっていることが多い。
コレクションオブジェクトは、単一オブジェクトとは違うプロパティ・メソッドを持っていることが多い。
「コレクションオブジェクト」と言ったり「コレクション」と言ったりすることがありますが、「コレクションオブジェクト」を省略して「コレクション」と呼んでいるだけと理解してください。
コレクションもオブジェクトの一種です。
Excel VBAの場合、個々のオブジェクト・単一オブジェクトとコレクションオブジェクトについて一番理解やすいのが、WorkbookとWorkbooksです。
一つのブックを表す単一オブジェクトがWorkbookオブジェクトで、WorkbookオブジェクトのまとまったものがWorkbooksコレクションオブジェクトです。
同様に、1枚のワークシートを表す単一オブジェクトがWorksheetオブジェクトで、WorksheetオブジェクトのまとまったものがWorksheetsコレクションオブジェクトです。
「同じ種類のオブジェクトをまとめたものがコレクションオブジェクト」的な説明は、多くの書籍でも行われているので「コレクションとは」という検索をした方なら、どこかで見かけたことが多いはずです。
WorkbooksとWorkbook、WorksheetsとWorksheetのように、コレクションオブジェクトの名前は単一オブジェクトの名前の複数形になっていることが多い、ということも何となく気づいてらっしゃるはずです。(絶対複数形になっているなどとは思い込まないでください。あくまでも、多いだけです。)
同じ種類のオブジェクトをまとめたものがコレクションオブジェクトであること、コレクションオブジェクトの名前は、その個々のオブジェクト・単一オブジェクトの名前の複数形になっていることが多いということをご存知の方には、是非
「コレクションオブジェクトはその個々のオブジェクトとは違うプロパティ・メソッドを持っていることが多い」
ということを理解していただきたいと考えています。
オブジェクトブラウザーでコレクションオブジェクトと個々のオブジェクトの違いを確認する
VBE(Visual Basic Editor)に付属するオブジェクトブラウザーで、Workbooksコレクションオブジェクトを調べると、下図のようなプロパティ・メソッドが存在していることがわかります。
この中で上のほうに表示されている
- Application
- Count
- Creator
- Item
- Parent
が、Workbooksコレクションオブジェクトのプロパティです。
ちなみに、開いている全ブックにループ処理するときにカウンタ変数・iを使ったFor~Next文で
For i = 1 to Workbooks.Count
と書くときの「.Count」が、ここで出てきたWorkbooksコレクションオブジェクトのCountプロパティです。
プロパティの下に表示されている
- Add
- CanCheckOut
- Close
- Open
- OpenDatabase
- OpenText
- OpenXML
が、Workbooksコレクションオブジェクトのメソッドです。
一方、Workbookオブジェクトをオブジェクトブラウザーで調べると下図のように大量のプロパティが存在していることがわかります。
この大量のプロパティの下に、メソッドが大量に並んでいます。
Workbooksコレクションオブジェクトと、その個々のオブジェクト・単一オブジェクトであるWorkbookオブジェクトは、まるで違うプロパティ・メソッドを持っています。
同様のことが、WorksheetsコレクションオブジェクトとWorksheetオブジェクトでも言えます。
コレクションとは何だろうといった疑問をお持ちの方は、コレクションオブジェクトの名前は、その個々のオブジェクト・単一オブジェクトの名前の複数形になっていることが多い。
コレクションオブジェクトは、単一オブジェクトとは違うプロパティ・メソッドを持っていることが多い。
ということを、まずは理解されることをおすすめします。
Home » エクセルマクロ・Excel VBAの使い方 » VBAのコレクションとは