Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » ダブルクリックしたセルの行をVBAで取得

ダブルクリックしたセルの行をVBAで取得

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2107 ビルド14228.20250 Microsoft Store)

Worksheet_BeforeDoubleClickイベントプロシージャ

「VBA ダブルクリックしたセルの行を取得」
という検索キーワードでアクセスがありました。

Excel VBAにまつわる「行を取得」という検索や質問には、注意が必要です。

[スポンサードリンク]

「行を取得」が、単なるデータである行番号の取得を意味している場合と、行を表すRangeオブジェクトの取得を意味している場合があるためです。

ダブルクリックしたセルの行番号と行全体を表すRangeを取得するイベントプロシージャ

「VBA ダブルクリックしたセルの行を取得」
がどちらを意味しているのかわかりませんので、行番号と行全体を表すRangeオブジェクトの両方を取得するイベントプロシージャをご紹介しておきます。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

 MsgBox "行番号は『" & Target.Row & "』です。"

 MsgBox "この後、行全体を表すRangeを取得して、選択します。"
 Target.EntireRow.Select

End Sub

たとえば、B3セルをダブルクリックした場合、
「行番号は『3』です。」
と表示されてから
「この後、行全体を表すRangeを取得して、選択します。」
メッセージのあとに、3行目全体が選択されます。

行番号を取得しているのが「Target.Row」
  MsgBox "行番号は「" & Target.Row & "」です。"

行全体を表すRangeオブジェクトを取得しているのが「Target.EntireRow」です。
  Target.EntireRow.Select

引数Targetでイベントの発生したオブジェクトがわかる

Worksheet_BeforeDoubleClickに限らず多くのイベントプロシージャでは引数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で取得

「イベントプロシージャ」の記事一覧

検索


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

.