オブジェクトとは

広告

データ型の1つにオブジェクト型というものがあります。オブジェクトとは、ブックやシート、そしてセルなどVBAで何か操作をしようとする対象となるものです。

主なオブジェクトには次のようなものがあります。

要素名オブジェクト名
アプリケーションApplication
ブックWorkbook
ワークシートWorksheet
セルRange

他にもグラフやフォームなどを表すオブジェクトがあります。

また例えばワークシートであれば、1つのブックオブジェクトの中に複数のワークシートオブジェクトが含まれています。このような同じオブジェクトの集まりのことをコレクションと言います。(コレクション自体もオブジェクトの1つです)。

例えば次のようなコレクションがあります。

要素名オブジェクト名説明
ブックWorkbooks開いている全てのブック
ワークシートWorksheetsブックに含まれる全てのワークシート

コレクションは例えばあるブックに含まれる全てのワークシートを管理しているもので、ワークシートコレクションから含まれるワークシートオブジェクトを1つ1つ取り出していくということが可能になります。

また、コレクションは階層構造になっています。

Application
  |
  +- Workbooks
       |
       +- Worksheets
            |
            +- Range

最上位には「Application」オブジェクトがあり、順にブック、シート、セル、と階層が下がっていくことになります。例えばシートはブックの中に含まれていますし、セルはシートの中に含まれているものですから、この階層構造は理解できるかと思います。

VBAではオブジェクトに対して色々な操作を行います。例えばシートを開くとかセルに文字を入力するとかなど操作の対象となるものがオブジェクトです。今までのサンプルでも「Range("A1").Value = 10」などと書いてきました。これは「A1の位置にあるセルの値を10に設定する」という意味になります。

オブジェクトは多数用意されており様々な利用方法がありますので、それぞえのオブジェクトの詳細は別のページで詳しく見ていきます。

変数にオブジェクト型を使用する

オブジェクトもデータ型の1つですので、各オブジェクトをデータ型とした変数を定義することができます。

Dim testBook As Workbook
Dim testSheet As Worksheet
Dim testRange As Range

使い方は他のデータ型と基本的には同じですが、変数に値を格納する時、左辺に変数、右辺に値、を記述して単にイコール(=)で結ぶだけではなく「Set」を付ける必要があります。

Dim testRange As Range

Set testRange = Range("A1")
testRange.Value = 20

いったん変数にオブジェクトを格納したら、後はオブジェクトを直接書く代わりに変数を使って記述することが出来ます。このあたりは他のデータ型の場合と同じです。

( Written by Tatsuo Ikura )