「VBA ダブルクリックしたセルの行を取得」
という検索キーワードでアクセスがありました。
Excel VBAにまつわる「行を取得」という検索や質問には、注意が必要です。
「行を取得」が、単なるデータである行番号の取得を意味している場合と、行を表すRangeオブジェクトの取得を意味している場合があるためです。
ダブルクリックしたセルの行番号と行全体を表すRangeを取得するイベントプロシージャ
「VBA ダブルクリックしたセルの行を取得」
がどちらを意味しているのかわかりませんので、行番号と行全体を表すRangeオブジェクトの両方を取得するイベントプロシージャをご紹介しておきます。
MsgBox "行番号は『" & Target.Row & "』です。"
MsgBox "この後、行全体を表すRangeを取得して、選択します。"
Target.EntireRow.Select
たとえば、B3セルをダブルクリックした場合、
「行番号は『3』です。」
と表示されてから
「この後、行全体を表すRangeを取得して、選択します。」
メッセージのあとに、3行目全体が選択されます。
行番号を取得しているのが「Target.Row」
MsgBox "行番号は「" & Target.Row & "」です。"
行全体を表すRangeオブジェクトを取得しているのが「Target.EntireRow」です。
Target.EntireRow.Select
引数Targetでイベントの発生したオブジェクトがわかる
Worksheet_BeforeDoubleClickに限らず多くのイベントプロシージャでは引数Targetで、イベントの発生したオブジェクトがわかります。
Worksheet_BeforeDoubleClickイベントプロシージャの場合、引数Targetは「ByVal Target As Range」と定義されているとおり、ダブルクリックされたセルを表すRangeオブジェクトがわかります。
RangeオブジェクトのRowプロパティを使えば行番号が取得でき、EntireRowプロパティを使えば行全体を表すRangeオブジェクトが取得できるのは、標準モジュールに作成する一般的なSubプロシージャと同じです。
最終更新日時:2021-08-19 17:32
Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » ダブルクリックしたセルの行をVBAで取得