皆さんこんにちは、ZeroTerasu(@ZeroTerasu)です。
今回からVBA初学者向け講座を連載していきたいと思います。VBAを学び初めの頃は未知の用語が頻出して、用語を勉強するだけで時間があっという間に過ぎてしまうなんてことがあると思います。
この連載記事では、初学者の方に出来るだけわかりやすくVBAに登場する用語を学んで頂けるよう記事を書いていこうと思っています。
「VBAを勉強し始めたけど専門用語が意味不明!?オブジェクトってなに!?」と思われたことはないでしょうか?
VBAには様々な専門用語が登場しますが、まずはじめに抑えておいて頂きたい用語が今回解説する
「オブジェクト」です。
結論:オブジェクトとは、「操作の対象となるもの」のことです。
オブジェクトを車を例にして考えてみる
VBAは、シートやセルをパーツとしてとらえて、それらのパーツを組み合わせてプログラムを組んでいく手法を取り入れたプログラミング言語です。
このようなプログラミング手法を「オブジェクト指向プログラミング(Object Oriented Programing (OOP))」と呼ばれます。(現時点では、特に覚える必要はありません。)
また、VBAにおけるオブジェクトは階層構造になっています。
オブジェクトの階層構造は、よく車に例えられます。車がパーツの組み合わせで出来ていることを例にして、下記の図のようにオブジェクトの階層構造を説明したいと思います。
オブジェクトと階層構造
車を例にしたオブジェクトと階層構造
1.工場が車を製造 = エクセルがワークブックファイルを生成
2.車は自動車部品から構成される。 = ワークブックはワークシートから構成される。
3.エンジンはスパークプラグ、ピストン、シリンダーヘッドなどのパーツから構成される。
=
ワークシートはセル、行、列などのパーツから構成される。
<車のオブジェクトと階層構造>
上記の車の例では、工場、車、自動車部品(エンジン、バッテリー、ボディ、ホイール、タイヤ)、エンジン部品(スパークプラグ、ピストン、シリンダーヘッド)。これら全てがオブジェクト(もの)なのです。工場を動かして(操作して)車を作ります。完成した車は、様々なパーツを組み合わせて作られています。工場や車やパーツを組み合わせたり、操作したりすることがこれからやろうとしているVBAでも行われています。これをオブジェクト指向プログラミングと言います。(オブジェクト(もの)を組み合わせたり、操作してプログラムを作っていきます。)
車は各自動車部品(パーツ)から構成され、その自動車部品(ここでは、エンジンを例にしています。)もまたエンジン部品というパーツで構成されていて、ピラミッド構造(階層構造)になっています。
VBAにおけるオブジェクトと階層構造
(上位階層)
1.Applicationオブジェクト = エクセル(工場)
2.Workbookオブジェクト = ワークブック(車)
3.Worksheetオブジェクト(Workbookオブジェクトを構成するオブジェクト)=ワークシート(エンジン)
4.Rangeオブジェクト、Cellsオブジェクト、Rowsオブジェクト、Columnsオブジェクト
(Worksheetオブジェクトを構成するオブジェクト)
(下位階層)
<VBAのオブジェクトと階層構造>
以下はVBAにおけるオブジェクト(もの)です。
・Applicationオブジェクト(エクセルそのもの)
・Workbookオブジェクト (一つのエクセルファイル)
・Worksheetオブジェクト (一つのシートを表します)
・Rangeオブジェクト(範囲またはセルを表します)
・Cellsオブジェクト(セルを表します)
・Rowsオブジェクト(行を表します)
・Columnsオブジェクト (列を表します)
そして、 Workbookオブジェクト は Worksheetオブジェクト から構成され、 Worksheetオブジェクト は Cellsオブジェクト、 Rowsオブジェクト、Columnsオブジェクトなどから構成されます 。このようにVBAでも車と同様にピラミッド構造(階層構造)が採用されています。
また、複数の Workbookオブジェクト を一塊にしたものを Workbooksコレクションと言います。(複数のオブジェクトを一塊にしたものをコレクションと言います。)
同様に、 複数の Worksheetオブジェクト を一塊にしたものを Worksheetsコレクションと言います。
VBAのオブジェクトと階層構造
VBAで登場するオブジェクトの例とその階層構造を示した例が下記の階層図になります。(会社の組織図と似ていますね。)
代表的なオブジェクトとコレクション
ここで代表的なオブジェクトとコレクションを紹介します。実際のエクセルの画面を色塗りして図解しました。
・Applicationオブジェクト:エクセルそのものを指します。
(分かりやすくするため、このオブジェクトをVBAにおけるオブジェクトの最上位と認識頂いて大丈夫です。)
・Workbookオブジェクト:一つのワークブックを指します。また、開いている各々のワークブックは、Workbooksコレクションというワークブックの集合体に含まれています。
・Worksheetオブジェクト:一つのワークシートを指します。現在開いているブックであれば、そのブックの中にあるそれぞれのシートが Worksheetオブジェクト です。また、ブックの中のそれぞれのワークシートオブジェクトは、Worksheetsコレクションというシートの集合体に含まれます。
・Rangeオブジェクト:セルの範囲やセルそのものを指します。
・Cellsオブジェクト:セルを指します。
以下に実際に、エクセル画面を用いて各オブジェクトおよびコレクションを分割してみました。
エクセル画面上の各オブジェクトおよびコレクションの分類
上記の図では、3つのエクセルファイルを開いています。それぞれのエクセルファイルの階層構造は下記の通りです。
Workbookオブジェクト(Book1)の階層構造
Workbookオブジェクト(Book2)の階層構造
Workbookオブジェクト(Book3)の階層構造
最後に
ご受講お疲れさまでした。オブジェクトやコレクションは概念的な内容でプログラミング初心者の方にはとっつきにくい内容だと思います。
概念的な内容を理解する近道は、視覚的なイメージを持って頂くことが一番だと考えており、今回は図を中心にした解説となりました。
次回は、実際にオブジェクトを操作する内容に進んでいこうと考えております。また、わからなければこの記事の図を参考にして頂き、イメージを持って学習を進めて頂ければと思います。
コメント