今回は対象のシート内セルをダブルクリックしたときにマクロを実行する方法を紹介します。
![Worksheet_BeforeDoubleClickイメージ](https://masashi-blog418.com/wp-content/uploads/2022/05/image-16-1024x538.png)
VBAを使えるようにする方法については以前紹介していますので、是非参考にしていただければと思います!
作成イメージ
こちらが作成イメージです。「BeforeDoubleClick」シート内のセルをダブルクリックすると、ダブルクリックしたセル番地がメッセージボックスで表示されます。
![作成イメージ](https://masashi-blog418.com/wp-content/uploads/2022/05/image-18-1024x410.png)
コード紹介
それでは、コードの紹介です。
なお、コードは実行するシート先に貼り付けてください。今回はSheet1(BeforeDoubleClick)に貼り付けます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox "「" & Target.Address & "」がクリックされました。"
End Sub
コードのポイント
今回のコードのポイントについて説明します。
シートイベント
まず、以下のコードです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Worksheet_何たら、って書いていますよね。
Excel VBAには、対象シート・ブック上で特定の操作をした際に実行される専用のプロシージャが用意されています。このプロシージャをイベントプロシージャと呼びます。
Worksheet_BeforeDoubleClickの場合、記述したシートのセルをダブルクリックした時に実行される、といった感じですね。これを記述していないシートのセルをダブルクリックしても何もないので注意しましょう。
Target,Cancel
次は、引数として指定されているTargetとCancelです。
ByVal Target As Range, Cancel As Boolean
Targetは、ダブルクリックしたRangeが取得されます。例えば、A1セルをクリックすれば、TargetにA1セルの情報が格納される感じです。
なので今回の場合、MsgBoxとTarget.Addressでダブルクリックしたセル番地を表示しているわけですね。
MsgBox "「" & Target.Address & "」がクリックされました。"
Cancelは、ダブルクリックしたセルを編集状態にするかどうか指定します。初期値はFalseです。
値 | 状態 |
---|---|
True | 編集状態にしない |
False(初期値) | 編集状態にする |
特にいじらなくてもマクロは動くのですが、毎回編集状態になるのは少々煩わしいので個人的にはソースの初めの方でTrueにしておくのがおすすめです!
Cancel = True
まとめ
今回は備忘録気味ですが、BeforeDoubleClickについて紹介しました。
ダブルクリック時以外にもシートをアクティブにした時や、変更を加えた時に実行できるプロシージャも用意されていますので、是非活用していただければと思います!
コメント