VBATips

Rangeからブック名を取得する(Parentプロパティ)

Rangeオブジェクトで管理する事で、コードが見やすくなり、
自身のVBAの理解度が増したと考えます。

Rangeオブジェクトのようなオブジェクト変数は、
通常の変数とは違い、優位な部分があります。

通常の変数とObject変数の違い

Rangeオブジェクトを使用していく場合、次に出てくる問題が、
下記のようなRangeの概念と異なる部分も操作可能です。

  • ワークブック名を取得する
  • ワークブックを閉じる
  • ワークシート名を取得する など

コードサンプル

Public Sub sample()
    '■Rangeオブジェクトに代入
    Dim rng As Range
    Set rng = ActiveWorkbook.Worksheets("Sheet1").Range("B2")
    
    '■Rangeからブック名を取得する
    Debug.Print rng.Parent.Parent.Name  'Book1
    
End Sub
■Parntプロパティで親階層を取得可能
・Parentを使用する事で、現Objectの親階層を参照可能です。(シート名を取得)
・Parent.Parentを使用する事で、現Objectの親階層の親階層を参照可能です。(ブック名を取得)
■階層(親子関係)のイメージ
Application
└ Wokbook
└ Worksheet
└ Range
上記概念を理解する事でオブジェクトを理解できたのではないでしょうか。
変数はエクセルのセル、定数はエクセルのセル(保護状態)と例えていますが、
オブジェクトは単なる変数のような値の情報以外の多くの情報を持っています。
(Value以外に、Range、Address、Name、WorkSheet、Workbook、Application等)

 

関連記事

 

コメント

タイトルとURLをコピーしました