ExcelマクロVBA入門 | 第58回.コレクションとは | Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説



最終更新日:2018-01-27

第58回.コレクションとは


同種のオブジェクトを複数まとめたものを「コレクション」と呼びます

コレクションもオブジェクトの一種です。


例えば、

Workbookオブジェクトが複数まとまったものは「Workbooksコレクション」

Worksheetオブジェクトが複数まとまったものは「Worksheetsコレクション」

オブジェクト名が単数形であるのに対し、

コレクション名が複数形であることがポイントです。

多くの場合、○○○オブジェクトに対応する、○○○sコレクションがあります。
(全てのオブジェクトにコレクションがあるわけではありません)

従って、Excelには、多くのコレクションがあります。


コレクションの中から、から単一オブジェクトを指定する場合

コレクション.Item(インデックス)

または、

コレクション.Item(オブジェクト名)

なのですが、

普通は、.Itemを省略して、

コレクション(インデックス)

または、

コレクション("オブジェクト名")

のように書きます。

具体的には、

Workbooks("Book1.xls")
Worksheets("Sheet1")
Worksheets(1)

等になります。

この使い方は、既に何度も出てきたものですので、問題は無いでしょう。



セルであるRangeオブジェクトのコレクションは

セルであるRangeオブジェクトのコレクションは、どうなっているのでしょうか。

少なくとも、Rangesコレクションというものはありません。

Rangeコレクションという言い方も、普通はしません。

言わば、セル(単一セル)のコレクションが、Rangeオブジェクトなのです。

そもそも、単一セルを表すオブジェクトが存在していないのです。

Cellsが複数形で、Cellオブジェクトのコレクションのような感じを受けるにもかかわらず、

Cellオブジェクトなんて存在していない事が、余計に混乱を招いているのかもしれません。

Rangeオブジェクトだけが特別なのです。

Rangeは、オブジェクトでもあり、コレクションでもあります



コレクションの要素数

コレクション.Count

これで、コレクション内のオブジェクト数を取得できます。

つまり、

コレクション(1)
コレクション(2)
・・・
コレクション(コレクション.Count)

これらが、単一のオブジェクトであり、その集合がコレクションとなっています。

ワークシートの場合なら、

例えば、「Sheet1」「Sheet2」「Sheet3」の3つのシートがある場合

Worksheets.Count → 3
Worksheets(1) → Sheet1
Worksheets(2) → Sheet2
Worksheets(3) → Sheet3

と言う事になります。



Collectionオブジェクト

Collectionオブジェクトとは、1つのオブジェクトとして参照できる複数の要素の集合です。
Collectionオブジェクを利用すると、互いに関連付けられた複数の要素を 1 つのオブジェクトとして参照できます。
つまり、
文字列、数値、オブジェクトを要素とした独自のコレクション(オブジェクト)を作成できるという事です。

コレクションのメンバは、同じデータ型を共有する必要はありません。
つまり、データ型の違うデータを1つのコレクションに入れられるという事になります。

Collection オブジェクトに、メンバを追加するときにはAddメソッドを使います。
Addメソッドの引数
 引数Itemの値は重複可能ですが、
 引数Keyには重複する値を指定できずエラーとなります。
 引数Key省略可能ですが、その場合は当然キーによる要素へのアクセスは出来なくなります。

メンバを削除するときにはRemoveメソッドを使います。

作成したCollectionオブジェクトの使い方は、前述のコレクションと同様になります。

使用例

Dim cols As New Collection
'または、以下のように、DimとSetを使う
'Dim cols As Collection
'Set cols = New Collection

With cols
  .Add Item:="アイテム1", Key:="key1"
  .Add Item:="アイテム2", Key:="key2"
  .Add Item:="アイテム3", Key:="key3"
  .Remove ("key3")
  .Add Item:="アイテム4", Key:="key4"
End With

MsgBox cols.Count '3と表示
MsgBox cols(1) 'アイテム1と表示
MsgBox cols.Item(2) 'アイテム2と表示
MsgBox cols.Item(3) 'アイテム4と表示
MsgBox cols("key4") 'アイテム4と表示





同じテーマ「マクロVBA入門」の記事

第55回.Worksheetオブジェクト
第56回.Rangeオブジェクト
第57回.Applicationのプロパティ
第58回.コレクションとは
第59回.コレクション処理(For Each)
第60回.エラー処理(On Error)
第61回.「On Error Go To」と「Exit Sub」
第62回.「On Error Resume Next」とErrオブジェクト
第63回.ブックを開く(Open)
第64回.ブックを閉じる・保存(Close,Save,SaveAs)
第65回.シートの挿入、名前の変更(Add,Name)

新着記事 ・・・新着記事一覧を見る

数値範囲で表検索するVLOOKUP近似一致|エクセル関数超技(10月5日)
エクセルVBAでのシート指定方法|VBA技術解説(9月8日)
VBAのクラスとは(Class,Property,Get,Let,Set)|VBA技術解説(8月28日)
VBAこれだけは覚えておきたい必須基本例文10|VBA技術解説(8月22日)
VBAの省略可能な記述について|ExcelマクロVBA技術解説(8月11日)
複数条件判定を行う時のコツ|ExcelマクロVBA技術解説(7月11日)
For Next の使い方いろいろ|VBA技術解説(6月14日)
VBAを定型文で覚えよう|ExcelマクロVBA技術解説(3月26日)
VBAスタンダード試験対策まとめ|MOS VBAエキスパート対策(3月16日)
ユーザーフォームとメニューの操作|MOS VBAエキスパート対策(3月14日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数とデータ型(Dim)|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.マクロって何?VBAって何?|ExcelマクロVBA入門
7.定数と型宣言文字(Const)|ExcelマクロVBA入門
8.とにかく書いて見よう(Sub,End Sub)|VBA入門
9.繰り返し処理(For Next)|ExcelマクロVBA入門
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • コレクションとは

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。





    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。

    本文下部へ

    ↑ PAGE TOP