Worksheetのイベントプロシージャで、そのワークシートの名前を取得するために
Target.Parent.Name
といったコードが使われているのを見かけました。
Target.Parent.Nameとは
例えば、Worksheetクラスの代表的なイベントプロシージャである、Worksheet_SelectionChangeでは、「ByVal Target As Range」と定義されている引数Targetで、新たに選択されたセル範囲を表すRangeオブジェクトを取得できます。
この引数Targetで取得できるRangeの親に該当するオブジェクトは、そのセル範囲の存在するワークシートを表すWorksheetオブジェクトオブジェクトです。
ですから、Rangeオブジェクトに用意されているParentプロパティを使ったコード「Target.Parent.Name」で、確かにワークシートの名前を取得できます。
ですが、もっと簡単なコードで、ワークシート名を取得できます。
Me.Nameでワークシート名を取得できる
以下のようなWorksheet_SelectionChangeイベントプロシージャで、ワークシート名がメッセージボックスに表示されます。
MsgBox Me.Name
End Sub
VBAのキーワードMeを使うと、コードの書かれているオブジェクトを取得できるのです。
Worksheetのイベントプロシージャであれば、キーワードMeでイベントの発生しているWorksheetオブジェクトを取得できます。
Workbookのイベントプロシージャであれば、キーワードMeでイベントの発生しているWorkbookオブジェクトを取得できます。
最終更新日時:2021-09-06 07:06
Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » Worksheetのイベントプロシージャでワークシート名を取得する-Me.Name