Home » Excel VBA Rangeオブジェクト » Range.WorksheetプロパティでRangeからWorksheetを取得できる

Range.WorksheetプロパティでRangeからWorksheetを取得できる

動作検証バージョン:Windows 11 Home + 64bit Excel(バージョン2307 ビルド16626.20000 クイック実行)

RangeオブジェクトのParentプロパティを使うと、Rangeの親オブジェクトであるWorksheetオブジェクトを取得できること等をご紹介しています。

Parentは多くのオブジェクトに用意されているプロパティですから、知っておいていただきたいのですが、RangeオブジェクトからWorksheetオブジェクトを取得するのであれば、もっとおすすめしたいプロパティがあります。

Range.Worksheetプロパティです。

[スポンサードリンク]

オブジェクトブラウザーの詳細ペインで確認できるとおりRange.Parentの場合、戻り値は「As Object」と定義されていますが、

Range.Worksheetは「As Worksheet」と定義されている点でも使いやすいプロパティです。

Range.Worksheetを使ったサンプル

以下のExcelマクロを実行すると、アクティブセルの含まれるワークシートのシート名がメッセージボックスに表示されます。

Sub RangeのWorksheetプロパティでワークシート名を取得する()
 MsgBox ActiveCell.Worksheet.Name
End Sub

Range.WorksheetプロパティでWorksheetオブジェクトを取得して、Worksheet.Nameプロパティで取得したシート名をMsgBox関数で表示しています。

Range.ParentとRange.Worksheetの確認

ご紹介済みのRange.Parentの戻り値とRange.Worksheetの戻り値は、もちろん同じです。

以下のExcelマクロを実行すると、アクティブセルの含まれるワークシートのシート名が2回表示された後に、Trueと表示されます。

Sub RangeのParentとWorksheetの戻り値を確認する()
 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

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » Range.WorksheetプロパティでRangeからWorksheetを取得できる

「Excel VBA Rangeオブジェクト」の記事一覧

検索


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