アクセスログを眺めていて、
「vba parentとは?」
「vba parent 意味」
「.parent. マクロ意味」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
VBA(Visual Basic for Applications)のコードで、時折見かける「.Parent」というオブジェクト式について調べていた方による検索です。
オブジェクトは階層構造になっている
まず理解しておかなければならないのは、オブジェクトが階層構造になっているということです。
例えば、Excelのもっとも主要なオブジェクトである、
Application
Workbook
Worksheet
Range
は、
Application
└ Wokbook
└ Worksheet
└ Range
という階層関係・親子関係にあります。
この階層を辿ってオブジェクトを取得するのがExcel VBAの大原則ですが、毎回この階層を辿るのは面倒ですから、一部、上位のオブジェクトへの参照(オブジェクト式)を省略できる仕組みが用意されています。
Parentプロパティは階層関係の親オブジェクトを返す
で、この記事の本題であるParentとは何であるかについては、以下のとおりです。階層関係の上位(親)に該当するオブジェクトを返すプロパティ
階層関係の下(子)に該当するオブジェクトは、基本的にはプロパティ(一部はメソッド)によって取得できますが、逆方向に上・親のオブジェクトを取得するのが、Parentプロパティです。
Parentプロパティの役割を確認するサンプルマクロ
以下のマクロを実行してみると、Parentプロパティの働きが見えてくるのではないでしょうか。
MsgBox TypeName(Range("A1").Parent)
MsgBox TypeName(Range("A1").Parent.Parent)
MsgBox TypeName(Range("A1").Parent.Parent.Parent)
上記のマクロを実行すると、
Worksheet
Workbook
Application
の順でメッセージボックスが表示されます。
「Range("A1").Parent」というオブジェクト式で、
Rangeオブジェクトの親オブジェクトである
Worksheetオブジェクトが取得できて、
TypeName関数で種別を取得して
「Worksheet」がメッセージボックスに表示されます。
「Range("A1").Parent.Parent」というオブジェクト式で、
Rangeオブジェクトの親オブジェクトである
Worksheetオブジェクトの親オブジェクトである
Workbookオブジェクトが取得できて、
TypeName関数で種別を取得して
「Workbook」がメッセージボックスに表示されます。
「Range("A1").Parent.Parent.Parent」というオブジェクト式で、
Rangeオブジェクトの親オブジェクトである
Worksheetオブジェクトの親オブジェクトである
Workbookオブジェクトの親オブジェクトである
Applicationオブジェクトが取得できて、
TypeName関数で種別を取得して
「Applications」がメッセージボックスに表示されます。
最終更新日時:2023-07-05 15:03
Home » エクセルマクロ・Excel VBAの使い方 » VBAのParentとは