Home » エクセルマクロ・Excel VBAの使い方 » VBAのParentとは

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

アクセスログを眺めていて、
「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プロパティの役割を確認するサンプルマクロ

以下のマクロを実行してみると、Parentプロパティの働きが見えてくるのではないでしょうか。

Sub Parentプロパティの動作を確認する()

 MsgBox TypeName(Range("A1").Parent)
 MsgBox TypeName(Range("A1").Parent.Parent)
 MsgBox TypeName(Range("A1").Parent.Parent.Parent)

End Sub

上記のマクロを実行すると、
  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とは

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.
.