コントロール上でダブルクリックしたときに発生するイベント(DblClickイベント)
ユーザーフォームに設置したコントロール上でダブルクリックされた時に発生するイベントが DblClick イベントです。ダブルクリックとはコントロールの上でマウスボタンを 2 回クリックすることで、 Click イベントが発生したあとに発生します。ここでは Excel のユーザーフォームで DblClick イベントがどのようなときに発生するのかやイベントが発生したときに呼び出されるイベントプロシージャの記述方法について解説します。
(Last modified: )
ユーザーフォームにおけるDblClickイベントとは
ユーザーフォームにおける DblClick
イベントがどのような時に発生するのか、また発生したときのイベントプロシージャの記述方法について解説します。
どのようなときにイベントが発生するのか
DblClick
イベントはコントロールをマウスボタンを 2 回クリックしたときに発生します。
DblClickイベントのイベントプロシージャ
DblClick
イベントに対するイベントプロシージャは次のような形式となっています。
Private Sub オブジェクト_DblClick(ByVal Cancel As MSForms.ReturnBoolean) End Sub
なおマルチページおよびタブストリップの場合だけはイベントプロシージャは次のような形式となっています。
Private Sub オブジェクト_DblClick(ByVal Index As Long, ByVal Cancel As MSForms.ReturnBoolean) End Sub
引数の Index
を参照することで Pages
または Tabs
コレクション内の Page
または Tab
オブジェクトのインデックスを参照できます。
対象のコントロールでマウスボタンが 2 回クリックされると DblClick
イベントが発生し、 DblClick
イベントに対するイベントプロシージャが呼び出されます。例えばラベルがダブルクリックされた時に実行したい処理を DblClick
イベントに対するイベントプロシージャ中に記述しておいてください。
※ 引数の Cancel
の使い方についてはこのあとで解説します。
それでは簡単なサンプルで試してみます。ユーザーフォームにリストボックスを設置しました。
ユーザーフォームが表示される前に発生する Initialize
イベントに対するイベントプロシージャを作成し、その中でリストボックスに項目を追加しておきます。
Option Explicit Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To 10 ListBox1.AddItem "項目" & i Next i End Sub
そしてリストボックスに対する DblClick
イベントに対するイベントプロシージャをコードウィンドウで次のように記述してください。
Option Explicit Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) MsgBox ListBox1.Text End Sub
リストボックスの項目がダブルクリックされると、現在選択している項目の値を取得してメッセージボックスで表示しています。
これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
ユーザーフォームが表示されました。
リストボックスに表示されている項目をマウスでクリックすると項目が選択されるだけですが、項目をマウスでダブルクリックすると、 DblClick
イベントが発生し、メッセージボックスにクリックした項目の値が表示されます。
2回目のクリックをキャンセルする
例えばトグルボタンをクリックすると選択と非選択を交互に繰り返しますが、ダブルクリックしてしまうと選択してすぐに非選択となり元の状態に戻ります。
もしダブルクリックしても 2 回目のクリックを無視したい場合には DblClick
イベントのイベントプロシージャの中で、引数の Cancel
の戻り値として True を設定することで、 2 回目のクリックを無視することができます。
実際に試してみます。トグルボタンに対する DblClick
イベントに対するイベントプロシージャをコードウィンドウで次のように記述してください。
Option Explicit Private Sub ToggleButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Cancel = True End Sub
ユーザーフォームを表示し、トグルボタンをダブルクリックしても 2 回目のクリックは無視されるためトグルボタンは選択された状態となります。
Click、DblClickイベントの発生する順番
DblClick
イベントが発生する場合、その前に Click
イベントが発生します。例としてラベルを使って確認してみます。
ユーザーフォームにラベルを設置しました。
ラベルに対する Click
イベントと DblClick
イベントのイベントプロシージャをそれぞれ次のように記述しました。イベントが発生するとイミディエイトウィンドウにでイベントの種類を出力します。
Option Explicit Private Sub Label1_Click() Debug.Print "Click" End Sub Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "DblClick" End Sub
ユーザーフォームを表示したあと、ラベルをダブルクリックしてください。
イミディエイトウィンドウを確認すると、 Click
、 DblClick
の順番でイベントが発生することが確認できます。
-- --
Excel のユーザーフォームで DblClick イベントがどのようなときに発生するのかやイベントが発生したときに呼び出されるイベントプロシージャの記述方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。