EB000022_VBAエキスパート(ExcelVBAベーシック)合格講座/第二十二回:コレクション

VBAエキスパート(ExcelVBAベーシック)合格講座/第二十一回:コレクション ExcelVBA Basic

このページの内容について

このページは、VBAエキスパート(ExcelVBAベーシック)試験合格講座の第二十二回記事です。公式テキスト第4章「VBAの構文」と第9章「シートとブックの操作」の内容について解説します。1時間の講義でお話する程度の分量です。講座受講者の復習での利用を想定しています。

コレクション

コレクションとは

コレクションとはアイテムの集合体のことです。アイテムには値やオブジェクトを指定できます。

公式テキストにはコレクションのことを「同じオブジェクトの集合体である」との表現がありますが、それはExcelVBAの一部の特別なコレクションに限った特性です。

コレクションの宣言

コレクションは変数と同様、宣言して使用します。

Dim コレクションに指定する任意の名称 As Collection

コレクションの作成

コレクションはオブジェクトの一種です。オブジェクトは宣言するだけでは使用できず、オブジェクトを作成もしくは既存のオブジェクトを代入する必要があります。

Set コレクションに指定した名称 = New Collection
Set コレクションに指定した名称 = コレクションオブジェクト

コレクションのメソッド

コレクションには以下の4つのメソッドが用意されています。他のメソッドやプロパティはありません。

メソッド役割
Addコレクションにアイテム(値やオブジェクト)を追加します
Countコレクションに格納されたアイテムの数を数えます
Itemコレクションに格納されたアイテムを取り出します
Removeコレクションに格納されたアイテムを削除します

Addメソッド

引数役割
Addコレクションにアイテム(値やオブジェクト)を追加します
Countコレクションに格納されたアイテムの数を数えます
Itemコレクションに格納されたアイテムを取り出します
Removeコレクションに格納されたアイテムを削除します

「ThisWorkbook」オブジェクトには「WorkSheets」という「WorkSheet」オブジェクトの集合体が含まれています。

コレクションの参照方法

コレクションはオブジェクトの集合体なので、コレクションの中のオブジェクトを特定してメソッドやプロパティを呼び出すことができます。「コレクション名(インデックス)」でオブジェクトを特定します。一部のコレクションは

サンプルコード(クリックでコピー)
Private Sub Test_Collection()
Debug.Print ThisWorkbook.Worksheets(1).Name
End Sub
実行結果

上記サンプルでは「ThisWorkbook」の「WorkSheets」コレクションの一番目のオブジェクトの「Name」プロパティを取得・表示しています。

コレクションもオブジェクト

ややこしいポイントですが、コレクションもオブジェクトの一種です。そのためコレクション自体もメソッドとプロパティを持っています。

サンプルコード(クリックでコピー)
Private Sub Test_Collection2()
Call ThisWorkbook.Worksheets.Add
Debug.Print ThisWorkbook.Worksheets.Count
End Sub
実行結果

上記サンプルでは「ThisWorkbook」の「WorkSheets」コレクションの「Add」メソッドにより、ブックへシートを追加し、その後「Count」プロパティでWorkSheetオブジェクトの数を取得・表示しています。

コレクションは必ずしも複数のオブジェクトが含まれているとは限りません。現在のExcelのデフォルト設定では、ブックを立ち上げた時点でシートは1つしかありません。そのため、WorkSheetsコレクションの中にもWorkSheetオブジェクトは1つしか入っていない状態です。

【PR】VBAエキスパート試験対策記事

当サイトでは、オデッセイコミュニケーションズ社が運営する試験であるVBAエキスパートExcel VBA ベーシックExcel VBA スタンダード)の出題範囲をベースに用語や各種関数の解説などを行っています。試験合格に向けて必須と言われる公式テキストに沿って解説をしています。受験をするか悩んでいる方、テキストとは別視点の解説を見てみたい方、受験はしないがExcelVBA(マクロ)に興味がある方へ向けた記事です。

Comment