コントロール上でダブルクリックしたときに発生するイベント(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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。