RangeオブジェクトのParentプロパティを使うと、Rangeの親オブジェクトであるWorksheetオブジェクトを取得できること等をご紹介しています。
Parentは多くのオブジェクトに用意されているプロパティですから、知っておいていただきたいのですが、RangeオブジェクトからWorksheetオブジェクトを取得するのであれば、もっとおすすめしたいプロパティがあります。
Range.Worksheetプロパティです。
オブジェクトブラウザーの詳細ペインで確認できるとおりRange.Parentの場合、戻り値は「As Object」と定義されていますが、
Range.Worksheetは「As Worksheet」と定義されている点でも使いやすいプロパティです。
Range.Worksheetを使ったサンプル
以下のExcelマクロを実行すると、アクティブセルの含まれるワークシートのシート名がメッセージボックスに表示されます。
MsgBox ActiveCell.Worksheet.Name
End Sub
Range.WorksheetプロパティでWorksheetオブジェクトを取得して、Worksheet.Nameプロパティで取得したシート名をMsgBox関数で表示しています。
Range.ParentとRange.Worksheetの確認
ご紹介済みのRange.Parentの戻り値とRange.Worksheetの戻り値は、もちろん同じです。
以下のExcelマクロを実行すると、アクティブセルの含まれるワークシートのシート名が2回表示された後に、Trueと表示されます。
Dim obj_parent As Object
Set obj_parent = ActiveCell.Parent
MsgBox obj_parent.Name
Dim obj_worksheet As Object
Set obj_worksheet = ActiveCell.Worksheet
MsgBox obj_worksheet.Name
MsgBox obj_parent Is obj_worksheet
End Sub
Range.Parentの戻り値を、オブジェクト変数obj_parentに代入して、そのNameプロパティを使ってシート名をメッセージボックスに表示し、
Set obj_parent = ActiveCell.Parent
MsgBox obj_parent.Name
Range.Worksheetの戻り値を、オブジェクト変数obj_worksheetに代入して、そのNameプロパティを使ってシート名をメッセージボックスに表示し、
Set obj_worksheet = ActiveCell.Worksheet
MsgBox obj_worksheet.Name
Is演算子を使って比較した結果を表示しています。
MsgBox obj_parent Is obj_worksheet
最終更新日時:2023-07-05 15:43
- Newer:VBAで指定した名前のシートを削除するのは意外と面倒
- Older:Excel VBAで直値が「-4142」の定数一覧
Home » Excel VBA Rangeオブジェクト » Range.WorksheetプロパティでRangeからWorksheetを取得できる