注目キーワード
  1. VBA
  2. 関数
  3. ショートカット

【VBA】オブジェクト・プロパティとは?【入門】

  • 2019年2月15日
  • 2019年4月3日
  • VBA
  • 16回
  • 1件
VBA NO IMAGE

前の記事ではVBAで使用する

ステートメント・Subプロシージャについて解説しました。

今回の記事では

オブジェクトとは?

オブジェクトの階層とは?

プロパティとは?

以上を紹介していきます。

VBAでは同じ名前でもオブジェクトと操作する場合とプロパティを操作する場合があるので

慣れるまでは混同してしまう場合があり初めに躓きやすい部分です。

ここでは、オブジェクトとプロパティについて丁寧に解説していきます。

オブジェクトとは?

ExcelVBAで重要な「オブジェクト」について解説していきます。VBAのプログラムではまず、オブジェクトを指定してそれに命令を出すことで一連のプログラムが実行されていきます。

VBAのオブジェクトは操作を行う対象をプログラムで扱えるような形で指定された名称です。

VBAのプログラムで特定のセルに対して操作を行いたい場合は「Rangeオブジェクト」でそのセルを表します。

オブジェクトとは「操作対象」のこと

セルに入力されているデータやセルのサイズやフォントの種類や色といった情報はセルを表す「Rangeオブジェクト」から情報を取得することが出来ます。また「Rangeオブジェクト」と通してセルの情報を変更することも可能です。

またセル以外のワークシートやワークブックにもそれぞれに対応するオブジェクトが用意されておりVBAではオブジェクトに対して命令を行うことでプログラムが進んでいきます。

セルやワークシート以外にも「フォントの設定」や「印刷ページ設定」や「Excelの機能」などもVBAではオブジェクトとしてとして表します。

VBAでそうした操作を実行するにはそのオブジェクトに対して命令を実行します。
フォントを変更したい場合は「Fontオブジェクト」塗りつぶしを変更したい場合は「Interiorオブジェクト」を通してそれぞれの操作を実行します。

オブジェクトの階層とは?

親オブジェクトと子オブジェクトの関係

VBAでは特定のワークブックは「Workbookオブジェクト」と表しブックに含まれる特定のワークシートは「Worksheetオブジェクト」と表しその中にある特定のセルは「Rangeオブジェクト」として表されます。またExcelそのものは「Applicationオブジェクト」に属しています。

特定のセルはRangeオブジェクトで記述しましたが、「Workbookオブジェクト」の中の「Worksheetオブジェクト」の中の「Rangeオブジェクト」として操作をしています。Rangeオブジェクトのみで記述するとアクティブになっている「Worksheetオブジェクト」の「Rangeオブジェクト」に対して操作を行うことになるので特定のシートやブックに対して操作を行う場合は省略せずに記述していきます。

また、セルに対してフォントを変更する「Fontオブジェクト」や塗りつぶしを設定する「Interiorオブジェクト」も「Rangeオブジェクト」の子オブジェクトとして表します。

プロパティとは?

オブジェクトを操作するには大きく分けると「プロパティ」や「メソッド」を使って操作します。

まずはオブジェクトの現在の状態を調べたり変更したり出来る「プロパティ」について解説していきます。

オブジェクトの情報を表すプロパティ

プロパティはコンピュータ関連の用語しては「属性」と訳されます。

VBAで操作の対象となるオブジェクトにはそれぞれ何種類かの「プロパティ」が最初から設定されています。
プロパティは対象のオブジェクトの特定の情報を表しています。
プロパティには扱う情報の名称が付いており、オブジェクト名とプロパティ名を合わせて使うと詳細な情報を取得出来ます。

セルに入力されている値(数式の場合は結果の値)を取得するにはそのセルの「Rangeオブジェクト」に「Valueプロパティ」を使って情報を取得します。

プロパティでオブジェクトを操作する

プロパティから情報を取り出してもExcelを操作することは出来ない為、Excelに対して操作を行うには操作を行うコードと組み合わせてスタートメントにする必要があります。

対象の情報を取り出す以外にもその情報を変更する操作を行う場合にもプロパティを使って行います。

「Rangeオブジェクト」の「Valueプロパティ」に値を代入するとExcel上のセルの情報を変更する事が出来ます。

プロパティを使ってオブジェクトを取得する

プロパティを取得するコードでオブジェクトから取り出せるのは、数値や文字列といったデータとは別に対象のオブジェクトとは別のオブジェクトを取得することも出来ます。

VBAのプログラムではオブジェクトを直接記述するよりプロパティを使って間接的にオブジェクトを取得する書き方が一般的です。

このようなオブジェクトを返すプロパティには値を代入するといった操作は行えません。

特定のセルを表す「Rangeオブジェクト」では「Fontプロパティ」を使ってそのフォントの設定を表す「Fontオブジェクト」を取得することができます。

プロパティからオブジェクトを取得する場合はプロパティ名とオブジェクト名が同名の場合が多いので混同しないように注意してください。

「Rangeオブジェクト」の「Fontプロパティ」を使って

特定のセルの「Fontオブジェクト」を取得出来ます。

対象のオブジェクトを省略出来るプロパティ

プロパティの中には、対象のオブジェクトを指定せずにコードの中で単独で使用できるプロパティがあります。指定を省略出来るオブジェクトはExcelVBAの環境を表すオブジェクトです。

プロパティ 取得できるオブジェクト
Application 作業中のアプリケーションを表すApplicationオブジェクト
Range 作業中のシートの特定のセル参照を表すRangeオブジェクト
Selection 選択範囲を表すRangeオブジェクト
ActiveSheet 作業中のシートを表すWorksheetオブジェクト
Sheets 作業中のブックのすべてのシートを表すSheetsオブジェクト
ActiveWindow 作業中の文書ウィンドウを表すWindowオブジェクト
Windows 開かれてるすべての文書ウィンドウを表すWindowsオブジェクト

紹介してきたRangeオブジェクトを含めてVBAのスタートメントの多くは対象のオブジェクトを省略した、オブジェクトを取得するプロパティから記述をはじめます。

これらのプロパティから取得したオブジェクトに対してさらにプロパティを使ってその情報を求めたり操作したりします。

オブジェクトとプロパティは「.」半角のピリオドを使ってつないで記述していきます。

上記のコードでは対象のオブジェクトを省略した「ActiveSheetプロパティ」を使って「ActiveSheetオブジェクト」を取得して、その名前を表す「Nameプロパティ」を使って作業中のシートの名前を調べる事が出来ます。

ただし、これだけではスタートメントは成立することが出来ない為、実行しても作業中のシートの名前を求める事は出来ません。この式で取得できた情報を確認するには「MsgBox関数」などを使ってメッセージ画面に作業中のシート名を表示することが出来ます。

プロパティに値を代入する 

プロパティに値を代入することによって、対象のオブジェクトの状態を変更することが出来ます。プロパティに値を代入するには演算子「=」(半角イコール)を使って指定します。

上記のように設定対象のプロパティを左辺に、設定する値を右辺に指定します。

値を設定できないプロパティ

プロパティに値を代入する操作は、値を取り出す操作とは異なり操作出来ないプロパティもあります。「Applicationオブジェクト」の「Nameプロパティ」を使って「Microsoft Excel」を変更しようとしてもエラーが表示されます。このような値の取得のみで設定できないプロパティのことを「読み取り専用のプロパティ」と言います。

まとめ

今回は、VBAのオブジェクトとプロパティについて解説しました。

2つのシート間でデータをやりとりする際などに指定したセルがどのオブジェクトの階層に属しているか?

親オブジェクトはどれか?といった点を理解していないと思った処理が出来なかったりエラーが発生してしまう場合が
あります。

記述する際にはどのオブジェクトに対して処理を行うかを注意しながらプログラムを組むと上達が早くなります。

前の記事から読み直す場合はこちらです。

【VBA】スタートメントとSubプロシージャとは?【入門】

VBAの記事一覧はこちらからです。

【基礎から学べる】ExcelマクロとVBA【入門】

NO IMAGE
最新情報をチェックしよう!